본문 바로가기

백준 문제풀이21

[백준] 1021번 이번 문제는 저번에 자료구조를 공부하고 정리해서 글을 쓴 것을 응용하여 백준 문제에 도전했다. 처음에 문제를 제대로 이해하지 못해서 삽질을 오래했다. 삽질내용 : 최대한 효율적으로 하기 위해 빠르게 찾는게 목적이다, 하고 이건 덱에 관한 문제니까 앞 뒤로 삭제가 가능하니 앞, 뒤에서 바로바로 삭제하고 값을 빨리 찾아야지 ! 하고 했다가 예제 출력보다 낮게 나와서 일일히 찍어보느라 오래걸렸다. 앞 뒤로 삭제하는게 아닌 그냥 앞에서만, removeFirst() 메소드만 사용하는 것이였다... 다시 돌아와서 처음에 짠 코드보다 약 2배가량 줄이는 리팩토링을 거쳤다. import java.io.*; import java.util.ArrayDeque; import java.util.Deque; import jav.. 2024. 4. 9.
[백준] 10815번 이 문제는 딱 보니 이분탐색이나 HashMap구조를 사용하면 될 것 같았다. 필자는 HashMap을 사용하는게 좀 더 편할 것 같아서 HashMap으로 풀었다.(HashMap안에 메서드 이용하기 위함) 필수로 알아야 할 HashMap의 메서드는 (HashMap객체명).put HashMap에 값 넣기 (HashMap객체명).containkey HashMap의 키 값중에 내가 넣어준 것과 일치하는 키가 있는가 ? -> ture/false 반환 을 이용해서 풀었다. 이게 생각나는대로 막 짜서 풀었던 결과이지만 마음에 들지않아 한 번 리팩터링을 하였다 import java.io.*; import java.util.HashMap; import java.util.StringTokenizer; public class.. 2024. 4. 1.
[백준] 2775번 이번 건 수식을 좀 세워야한다.. 수식 세우는건 어렵지 않으니 바로 코드 설명으로 넘어가보겠다. (직접 손으로 그려서 테스트해보면 된다) 2차원 배열을 사용해서 해결했다. 0층에 대한 값을 기본 세팅해주고 수식을 코드화 하면 된다 ! import java.io.*; public class b2775 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int arr[][] = new int[15][15]; for (int i = 1; i < 15; i++) { arr[0][i] = i; } for (int i = 1;.. 2024. 3. 31.
[백준] 1152번 풀 수 있는 방법은 많다.. 그 중 제일 간단하다고 생각한 StringTokenizer를 사용해서 풀어보겠다. import java.util.Scanner; import java.util.StringTokenizer; public class backjoon { public static void main(String[] args){ Scanner sc = new Scanner(System.in); StringTokenizer st = new StringTokenizer(sc.nextLine()); System.out.println(st.countTokens()); } } 먼저 Scanner와 StringTokenizer를 생성하고 입력받는다 그 후에 Tokenizer의 메소드인 countToken을 사용해.. 2024. 3. 30.
[백준] 1037번 풀이 풀이방법에는 크게 두 가지가 있는 것 같다. 배열사용, 리스트 사용 배열을 사용하면 최대값과 최소값을 구해야하고 리스트를 사용하면 정렬하여 첫 번째 인덱스와 마지막 인덱스를 가져오면 될 것 이다. 방법 1. 배열 사용 package B_1037; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws I.. 2024. 3. 17.
[백준] 2231번 풀이 문제는 다음과 같다. 방법은 두 가지가 존재하는데%연산자와 / 연산자를 잘 이용해서 모든 경우의 수를 검사하면 된다. 1부터 N까지 모든 경우의 수를 찾는 방법, 이 방법은 힌트만 남기고 넘어가겠다. %연산자와 / 연산자를 잘 이용해서 모든 경우의 수를 검사하면 된다. 알고리즘을 찾아서 이용하기. 필자는 2번을 이용해서 풀었다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void main(String[] a.. 2024. 3. 12.
[백준] 1032번 문제풀이 한창 데이터베이스를 배우고 있지만 자바를 까먹으면 안되기에 간간히 백준 문제를 풀고있다... 오늘은 1032번의 문제풀이이다 ! 문제를 보고 풀 수 있는 방법이 몇 개 떠올랐지만 유력한 후보 중에 char배열 을 이용하는건 매번 for문을 써서 넣어줘야 할 것 같아서 String 배열에 split을 사용하여 풀었다. 자세한 설명은 코드를 보면서 보자! import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Main { public static void ma.. 2024. 2. 20.
[백준] 1920번 문제풀이 스캐너를 사용하면 시간초과가 나와서 BufferdReader로 하시는 걸 추천 드립니다. 이분탐색 or TreeSet 으로 풀면 되는데 저는 TreeSet 으로 풀었습니다. (다르게 푸신 분도 있겠죠?) * TreeSet은 자동 정렬 기능이 있으며 중복 값을 허용하지 않습니다.* 처음에는 이 점을 이용해서 add만 사용하여 반환되는 T/F 값으로 코드를 짰다가 논리오류 잡는데 시간을 너무 많이써서 다른 방법으로 전환했습니다. 코드를 보기 전에 TreeSet에 관련된 메소드를 모르시면 간단하게 보시고 가시면 됩니다. first() : 가장 작은 값을 반환한다. last() : 가장 큰 값을 반환한다. floor() : 주어진 값과 동일하거나 그보다 작은 값 중 가장 큰 값을 반환한다. 자세한 설명은 코드에.. 2024. 2. 10.
[백준]10828번 문제풀이 처음에는 스캐너를 이용해서 풀었는데 시간초과가 나서 BufferedReader로 바꾸어서 풀었습니다. 지금까지 배운 기초들을 이용해서 풀기에 딱 적당한 문제느낌 먼저 실행되는 main문 입니다. public static void main(String[] args) throws IOException{ //BufferedReader는 예외처리 필수 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Stack st = new Stack(); //Integer형 스택을 만듬. int index = Integer.parseInt(reader.readLine()); //입력받을 개수 String str; //입력받은 문자열 S.. 2024. 2. 5.