본문 바로가기

PS832

[자바] 백준 9205 - 맥주 마시면서 걸어가기 (java) 문제 : boj9205 필요 알고리즘 개념 너비 우선 탐색 (bfs), 깊이 우선 탐색(dfs), 분리 집합(disjoint set) 중 하나 데이터를 원하는 형태로 바꾸는 사전작업이 좀 필요하다. 그것만 하면 그냥 가중치가 동일한 정점과 간선이 주어질 때 특정 지점부터 특정 지점까지 도달 가능하는지만 판단하면 되므로, bfs나 dfs나 분리집합이나 아무거나 써서 찾아주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이.. 2023. 2. 2.
[자바] 백준 3190 - 뱀 (java) 문제 : boj3190 필요 알고리즘 개념 시뮬레이션 문제에서 제시된대로 실제 뱀을 움직여보면서 언제 끝나는지 시뮬레이션을 돌려보면 된다. 덱 (deque) 등의 자료구조 뱀의 머리부분이 움직이고, 꼬리부분이 사라지는 부분을 시뮬레이션으로 구현하기 위해 내가 생각한 가장 적합한 자료구조는 덱을 사용하는 것인데, 구현만 가능하다면 어떤 자료구조를 써도 당연히 상관없다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이하 풀이는.. 2023. 2. 1.
[자바] 백준 7481 - ATM놀이 (java) 문제 : boj7481 필요 알고리즘 개념 정수론, 수학 나머지 연산을 사용해 풀 수 있다. 비둘기집의 원리 현재는 테스트케이스가 너무 빈약해서 의미 없지만, 테스트케이스 추가 시 통과하려면 비둘기집의 원리로 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 a와 b 중 큰 수를 hi, 작은 수를 lo 라고 해보자. 우선 가장 적은 수의 지폐를 만들려면, 가능한 경우의 수 중 hi가 가장 큰 경우를 찾아야 한다. .. 2023. 1. 31.
[자바] 백준 2859 - 별 관찰 (java) 문제 : boj2859 필요 알고리즘 개념 수학, 정수론, 브루트포스 수식을 정리해 브루트포스로 모든 경우를 살펴보면서 나누어떨어지는 경우를 찾아야한다. 비둘기집의 원리 좀 더 명확하게 횟수를 지정하고 싶거나, 몇 번 해야 Never인지 따로 판단하지 않으려면 이게 필요하다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 시간과 분으로 된 문자열은 처리하기가 상당히 까다롭다. 그러니 우선 정수로 변환하기 위해 입력값을 .. 2023. 1. 30.
[자바] 프로그래머스 - 올바른 괄호 (Lv2, Java) 문제 : Programmers-올바른 괄호 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 구현 보통 스택으로 설명할 것 같이 생겼는데 어차피 스택을 통한 풀이에서 넣을게 한 종류 뿐이라 딱히 필요없다. 규칙성만 잘 찾아서 구현해주면 된다. 풀이 '('를 +1, ')'를 -1이라고 생각해보자. "()()"은 anwer이 true였고. 0에서 시작해서 1, 0, 1, 0 이 된다. "(())()"은 true였고, 1, 2, 1, 0, 1, 0이 된다. ")()("은 false였고, -1, 0, -1, 0이다. "(()("은 false였고, 1, 2, 1, 2 이다. answer이 true가 되는 조건은 그럼 다음과.. 2023. 1. 29.
[자바] 백준 25377 - 빵 (java) 문제 : boj25377 필요 알고리즘 개념 구현 문제에서 제시된 방식대로 구현해주면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 로직은 아래와 같다. N을 입력받는다. 이하를 N번 반복한다. ___1. A, B를 입력받는다. ___2. A>B 라면 빵이 도착한 이후에 가게에 가는 것이므로 빵이 없다. 그러니 '1'로 돌아간다. ___3. '3'에 왔다면 빵을 구매 가능한 것이다. A는 필요없고, '3'까지 .. 2023. 1. 29.
[자바] 백준 2999 - 비밀 이메일 (java) 문제 : boj2999 필요 알고리즘 개념 구현, 문자열 문자열을 파싱해서 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 우선 R과 C를 구해야 한다. R= 1; i--) if (len%i==0) return i;// 나누어 떨어지는걸 찾을 시 i 리턴 return 0; } 2. 이제 세로로 써져있던걸 가로로 출력해줘야 한다. R과 C를 구했으니 출력은 어렵지 않다. 초기 문자열.. 2023. 1. 27.
[자바] 백준 9076 - 점수 집계 (java) 문제 : boj9076 필요 알고리즘 개념 정렬, 구현 정렬을 이용해 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 로직은 아래와 같다. 각 테스트마다 [A]____5개의 점수를 입력받는다. [B]____5개를 정렬한다. (정렬 후 1번째와 5번째 값은 최고점과 최저점이므로 무시한다.) [C]________if 2번째 점수와 4번째 점수가 4이상 차이난다면 KIN을 출력한다. [D]_.. 2023. 1. 25.
[자바] 백준 1422 - 숫자의 신 (java) 문제 : boj1422 필요 알고리즘 개념 정렬, 그리디 그리디로 접근해서 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 우선 K==N 이라고 생각해보자. 즉, 모든 숫자를 1번씩 배치해서 가장 큰 수를 만들어야 한다. 어떤 수를 먼저 배치하는게 이득일까? 어차피 만들어진 수의 자리수는 K개의 숫자들의 자리수의 합과 동일하다. 따라서 단순히 큰 수가 먼저오는건 의미가 없다. 예를들어 1과 100 중에 크다고 1.. 2023. 1. 24.
[자바] 백준 3101 - 토끼의 이동 (java) 문제 : boj3101 필요 알고리즘 개념 수학, 구현 수학태그가 달려있긴한데, 약간의 규칙찾기 + 구현 문제인 것 같다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 대각선으로 지그재그로 작성된걸 잘 살펴봐보자. 1 -> 2 -> 4 -> 7 -> 11 -> 16 까지 등차수열처럼 증가한다.(증가비가 1, 2, 3,...) 그리고 36 -> 34 -> 31 -> 27 -> 22 에서 등차수열처럼 감소한다.(감소비가 2, .. 2023. 1. 23.