본문 바로가기

PS/BOJ764

[자바] 백준 18114 - 블랙 프라이데이 (boj java) 문제 : boj18114 1. 한 개만 선택해서 C가 되는 경우 (코드 19~22line 참고) 이 경우는 간단하다. N개를 입력받으면서 해당 값이 C인 경우를 찾으면 된다. O(N) 2. 두 개를 선택해서 C가 되는 경우 (코드 24~31line 참고) 이 경우도 어렵지 않다. 미리 N개를 입력받으면서 배열에도 기록해두고, HashSet에도 기록을 해둔다고 해보자. 이후 배열을 순회하면서 현재 보고 있는 값이 A라고 할 때, HashSet에 C-A가 존재하는지만 확인해주면 된다. 주의점은 A != C-A 여야 한다(동일한 물건을 두 개 고르면 안되고, 모든 물건은 무게가 다르므로 A와 C-A가 동일할 수 없다). O(2N) 3. 세 개를 선택해서 C가 되는 경우 (코드 32~41line 참고) 이 경우.. 2022. 7. 21.
[코틀린, 자바] 백준 1094 - 막대기 (boj kotlin java) 문제 : boj1094 결국 64에서 시작해서 2씩 나눠가면서 나오는 64, 32, 16, 8, 4, 2, 1을 하나씩만 사용해서 숫자 X를 표현하는 문제이다. 눈썰미가 있다면 막대기로 바꿔서 표현했지만 결국 2진법 표현방식과 동일하다는 것을 알 수 있을 것이다. 즉, 이 문제는 X라는 10진수를 받아서 2진법으로 표현했을 때 비트가 1인게 몇개냐고 묻는 문제와 동일하다. 예를들어 23을 보자. 23을 2진법으로 표현하면, 23=16+4+2+1 이므로 다음과 같다. 23(10) = 0010111(2) 그럼 저 비트 1인 부분에 막대기가 하나씩 들어가주면 된다. 따라서 비트의 수를 세보면 4개이므로 4가 답이다. 이하 코드에서 자바의 경우엔 직접 비트를 세줬다. 그리고 코틀린으로는 Integer.bitCo.. 2022. 7. 20.
[자바] 백준 12100 - 2048 (Easy) (boj java) 문제 : boj12100 (상당히 귀찮은편인) 단순 시뮬레이션 문제이다. 최대 5번 이동이라고 했으므로, 처음 상태에서 상하좌우 4방향으로 움직이는걸 최대 5번 반복하면 된다. 즉, 최대 4^5번으로 모든 경우를 확인할 수 있다. 이 때 각 방향마다 NxN 칸의 모든 것들을 해당방향으로 움직여야 한다고 볼 수 있으므로 대략 O(N^2 x 4^5)의 시간복잡도가 된다. 그럼 남은건 상하좌우 방향으로 움직인다고 할 때, 문제에서 제시된 방법대로 동작만 되도록 시뮬레이션을 구현해주면 된다. 이 때 주의점은 예를들어 아래와 같은 경우를 보자. 2 0 0 2 0 0 2 0 0 위와 같은 경우 우측 방향으로 모두 이동시킨다고 했을 때, 우측으로 모두 붙어야 할 것이다. [A] 0 2 0 0 2 0 0 2 0 [B].. 2022. 7. 20.
[코틀린, 자바] 백준 2273 - 줄 서기 (boj kotlin java) 문제 : boj2273 1. 알아야 하는 것 총 5명이 있다고 가정하고 내 앞에 서야 한다고 확정된 학생이 2명이고, 내 뒤에 서야 한다고 확정된 학생이 1명이라고 해보자. 이 정보를 가지고 '각 학생이 설 수 있는 위치의 범위'를 알 수 있을까? 내 앞에 최소 2명은 있어야 하므로 난 무조건 3번째 자리 이상으로 서야 한다. 또한 내 뒤에 반드시 한 명은 있어야 하므로 4번째 이하의 자리에 서야만 한다(5-1=4). 따라서 '설 수 있는 위치의 범위'는 '3 4'가 된다. 즉, 자신의 앞이라고 확정된 인원이 X명, 자신의 뒤라고 확정된 인원이 Y명, 총 N명이라면 범위는 'X+1 N-Y'가 됨을 알 수 있다. 그럼 다음의 경우를 생각해보자. 3 2 1 2 2 3 위의 경우 3의 앞에 2가 서고, 2의 .. 2022. 7. 19.
[코틀린, 자바] 백준 9723 - Right Triangle (boj kotlin java) 문제 : boj9723 코틀린이랑 자바랑 둘 다 짜는 이유는 우선 코틀린으로 짜보고 -> 자바로 짠 후에 -> 자바를 코틀린으로 변경해서 쓸만한거 줍줍하기 위해서이다. 코틀린 익히기에 상당히 괜찮은 것 같다. 아무튼 문제는 직각 삼각형을 찾으면 된다. 즉, 3개의 변을 입력으로 받은 후에 가장 긴 변의 제곱이 나머지 두 변의 제곱의 합이 되는지 확인하면 된다. 그렇게 된다면 YES, 그렇지 않다면 NO를 출력해주면 된다. 코드(kotlin) : github import java.io.BufferedReader import java.io.InputStreamReader import java.util.* fun main() = with(BufferedReader(InputStreamReader(System... 2022. 7. 18.
[자바] 백준 23812 - 골뱅이 찍기 - 돌아간 ㅍ (boj java) 문제 : boj23812 규칙을 찾고 구현해보자! @가 가득찬 경우('@@@@@')를 type 0, 좌측과 우측에 일부가 있는 경우('@ @')를 type 1이라고 해보자. type 0의 경우 n행에 걸쳐서 5n개의 골뱅이를 출력한다. type 1의 경우 n행에 걸쳐서 n개의 골뱅이 - 3n개의 공백 - n개의 골뱅이를 출력한다. type에 따라 위의 규칙에 맞춰 출력해주는 함수를 구현한 후, type 1; type 0; type 1; type 0; type 1; 순서대로 출력을 해주면 된다! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void print(int.. 2022. 7. 17.
[자바] 백준 23810 - 골뱅이 찍기 - 뒤집힌 ㅋ (boj java) 문제 : boj23810 규칙을 찾고 구현해보자! @가 가득찬 경우를 type 0, 좌측에 일부분만 @가 있는 경우를 type 1이라고 해보자. type 0의 경우 n행에 걸쳐서 5n개의 골뱅이를 출력한다. type 1의 경우 n행에 걸쳐서 n개의 골뱅이를 출력한다. type에 따라 위의 규칙에 맞춰 출력해주는 함수를 구현한 후, type 0; type 1; type 0; type 1; type 1; 순서대로 출력을 해주면 된다! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void print(int n, StringBuilder sb, int type) { fo.. 2022. 7. 16.
[자바] 백준 23805 - 골뱅이 찍기 - 돌아간 ㄹ (boj java) 문제 : boj23805 규칙을 찾아서 구현해주면 된다. 규칙은 아래와 같다. 1. n줄에 걸쳐 3n개의 @, n개의 공백, n개의 @ 2. 3n줄에 걸쳐 n개의 @, n개의 공백, n개의 @, n개의 공백, n개의 @ 3. n줄에 걸쳐 n개의 @, n개의 공백, 3n개의 @ 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { StringBuilder sb = new StringBuilder(); private void print(char c, int cnt) { while (cnt-->0) sb.append(c); } private void br() {sb.append('\n');}.. 2022. 7. 15.
[자바] 백준 6581 - HTML (boj java) 문제 : boj6581 결국엔 문제에서 제시된대로 구현하면 되긴..하는데.. 좀 까다롭긴하다. 그래도 뭐 해설을 할 부분은 딱히 없는 것 같다. 문제의 조건대로 구현만 하면 되긴하니. 특히 주의할 점이라면 각 줄의 끝에 공백문자가 있으면 안된다. 즉, 'abc ' 이러면 안되고 'abc' 이래야 한다. 이것 때문에 좀 헤맸다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main { int idx = 0; StringBuilder sb = new StringBuilder(); pr.. 2022. 7. 14.
[자바] 백준 23811 - 골뱅이 찍기 - ㅌ (boj java) 문제 : boj23811 규칙을 찾고 구현해보자. 위와 같이 A형태와 B 형태가 있고, A B A B A 형태로 출력하고 있다. A를 type=0, B를 type=1 이라고 해보자. type 0의 경우 n행에 걸쳐서 5n개의 골뱅이를 출력한다. type 1의 경우 n행에 걸쳐서 n개의 골뱅이를 출력한다. type에 따라 위의 규칙에 맞춰 출력해주는 함수를 구현한 후, type 0; type 1; type 0; type 1; type 0; 순서대로 출력을 해주면 된다! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void print(int n, StringBuild.. 2022. 7. 13.