본문 바로가기

PS831

[자바] 백준 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.
[자바] 백준 1323 - 숫자 연결하기 (java) 문제 : boj1323 필요 알고리즘 개념 수학, 정수론 나머지 연산의 법칙을 활용하는 수학문제이다. 비둘기집의 원리 불가능한 경우를 알기 위해 비둘기집의 원리를 사용해야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 N이 10억까지 가능한데, 이걸 3번만 붙여도 long 으로 표현 가능한 수치를 넘어간다. BigInteger를 사용해 뭔가를 구하게되면 결국 문자열로 처리하는 것이므로 연산 속도가 엄청나게 느려진다. .. 2023. 1. 21.