본문 바로가기

분류 전체보기1068

[ABC259] C - XX to XXX (AtCoder Beginner Contest 259 in Java) 문제 : abc259_c 내 경우엔 String을 다음과 같이 압축시켜서 판단했다. abbaac => a1 b2 a2 c1 abbbbaaac => a1 b4 a3 c1 위와 같이 압축시킬 경우, 다음과 같이 판단할 수 있다. 1. 압축시킨 갯수가 다를 경우 No (예를들어 a1 b2 c2 vs a1 b2 였다면 3개와 2개로 비교해볼 것도 없이 No 이다.) 2. 압축시킨 부분에서 문자 부분이 서로 다른 경우 No (예를들어 a1 b1 c1 vs a1 d1 c1) 3. 압축시킨 각 부분에서 숫자가 S를 압축시킨쪽이 더 큰 경우 No (예를들어 a2 vs a1) 4. 압축시킨 각 부분에서 숫자가 서로 다른데, S가 1인 경우 No (예를들어 a1 vs a2) 5. 이외의 경우 Yes 코드 : github .. 2022. 7. 11.
[ABC259] A - Growth Record (AtCoder Beginner Contest 259 in Java) 문제 : abc259_a 예를들어 N=4, T=10, D=3, X=3 인 경우를 그려보면 다음과 같다. 이 때, X부터는 변화가 없으므로 M이 X이상이라면 단순히 T가 답이 된다. 그 이하의 경우가 문제인데 그 이하의 경우엔 일정하게 줄어들게 되므로 T-(X-M)*D 가 될 것이다. 말로 설명하면 [X일때의 키(T)]-[X에서 몇 번 D만큼 내려가야하는지(X-M)]*[키의 변화수치(D)] 이다. 코드 : github ... private void solution() throws Exception { int n = nextInt(); int m = nextInt(); int x = nextInt(); int t = nextInt(); int d = nextInt(); if (m >= x) { System... 2022. 7. 11.
[자바] 백준 9288 - More Dice (boj java) 문제 : boj9288 'In each pair, the die values should be ordered from lowest to highest'와 'Only list unique dice combinations'에 따라 이하의 로직으로 확인하면 된다! for 1번 주사위를 1부터 6까지 증가시키면서 : for 2번 주사위를 1번 주사위의 현재 눈금 이상부터 6까지 증가키시면서 : 1번 주사위와 2번 주사위의 합이 입력으로 받은 합계인 경우 1번주사위, 2번주사위 순서로 출력한다.; 위와 같이 진행하면 문제의 조건을 지키면서 brute force로 모든 경우를 확인할 수 있다. 코드 : github import java.io.BufferedReader; import java.io.InputStrea.. 2022. 7. 11.
[코틀린, 자바] 백준 25214 - 크림 파스타 (boj kotlin java) 문제 : boj25214 매번 최소값과 최대값을 갱신한다고 생각해보자. 이 때 최소값이 갱신된 경우가 문제인데, 애초에 최소값이 갱신됬다고 i를 해당 값으로 선택하면 선택할 수 있는 j는 자기 자신밖에 없다(i cur) min = cur else ans = Math.max(ans, cur-min) sb.append(ans).append(' ') } println(sb) } 코드(java) : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private void solution() throws Exception { Buffered.. 2022. 7. 11.
[코틀린, 자바] 백준 14651 - 걷다보니 신천역 삼 (Large) (boj kotlin java) 문제 : boj14651 우선 3의 배수를 판정하는 방법부터 알아보자. 이 경우 수 A의 모든 자리의 숫자의 합이 3의 배수라면 A도 3의배수이다(정수론). 그럼 이 문제는 N자리 숫자에 대해, N번의 선택을 거친 결과 모든 자리 수의 합이 3의 배수인 경우의 수를 찾는 문제인 셈이다. 물론 단순하게 brute force로 찾아보려 한다면 O(3^33333)이 필요하므로 불가능하다. DP로 생각해보자. dp[a][b]를 a번째 자리수까지 더했을 때의 합을 3으로 나눈 나머지가 b인 경우의 수로 정해보자. 그럼 a가 5일때까지만 살펴보자. (N=5) 1. 우선 a=1 일 경우 다음과 같이 될 것이다. 또 이렇게 두면 '0으로 시작하는 수는 만들 수 없는 수 이삼' 부분을 별도로 처리하지 않아도 되기 때문에.. 2022. 7. 10.
[코틀린, 자바] BOJ 15645 - 내려가기 2 (boj kotlin java) 문제 : boj15645 ps. 코틀린의 경우 대강 인터넷 검색해서 문법을 익혔으므로 아직 늅늅이 상태여서 많이 어색하게 짰다. 이 문제의 경우 dp로 풀면 쉽게 풀린다. 알아야 하는 정보는 바로 직전 3칸의 합계 뿐이다(시작할때는 당연히 셋 다 0이라고 치면 된다.). N개의 줄을 입력받으면서, 매번 해당 칸으로 올 수 있는 값 중 최대와 최소값을 갱신 후에 현재 줄에서 입력받은 값을 더해주면 된다. dp[a][b]가 a라인까지 입력받았을 때 b번째(0,1,2로 3개) 칸까지의 최대합계라고 해보자. 그렇다면 dp[x][0] = max(dp[x-1][0], dp[x-1][1]) + 입력받은 0번째 값 dp[x][1] = max(dp[x-1][0], dp[x-1][1], dp[x-1][2]) + 입력받은 .. 2022. 7. 9.
[자바] 백준 10409 - 서버 (boj java) 문제 : boj10409 n번동안 정수를 입력받으면서, 남은 t에 입력받은 정수를 뺀 값이 양수인 동안 cnt라는 값을 증가시켜준고 t를 입력받은만큼 빼준다. 그리고 n개를 모두 입력받거나, 남은 t가 음수가 된 경우 cnt를 출력해주면 된다! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokeniz.. 2022. 7. 8.
[자바] 백준 9295 - 주사위 (boj java) 문제 : boj9295 1. 테스트 케이스 수를 입력받고, 반복문으로 테스트케이스 수만큼 반복하면서 현재 테스트 케이스 몇 번 인지 알 수 있어야 한다. 2. 두 개의 숫자를 입력받아 합을 구할 수 있어야 한다. 위 두가지를 할 수 있다면 풀 수 있다! 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = .. 2022. 7. 7.
[자바] 백준 23795 - 사장님 도박은 재미로 하셔야 합니다 (boj java) 문제 : boj23795 1. -1이 뜰 때 까지 계속 한줄씩 입력받아 int로 변경하는 로직 2. '1'의 int값을 계속해서 더하다가 -1이 뜨면 출력하고 종료하는 로직 위의 두가지만 잘 구현해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { private void solution() throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int sum = 0; while (true) { int cur = Integer.parseInt(br.readLine(.. 2022. 7. 6.
[자바] 백준 2153 - 소수 단어 (boj 2153) 문제 : boj2153 1. 문자를 문제에서 제시된 방법대로 합계를 구할 수 있어야 한다. -> 문자의 각 character인 c를 확인하면서 아래처럼 구하자. - 'a'~'z'인 경우 : sum += 1+c-'a'; - 'A'~'Z'인 경우 : sum += 27+c-'A'; 2. '1'에서 구한 sum이 소수인지 소수판정을 해야 한다. -> 이 경우 2부터 sqrt(sum) 까지의 정수로 직접 나눠보고, 이 중 하나라도 sum을 나누어떨어지게(나머지가 0) 하는 값이 있다면 소수가 아니다. sqrt(sum) 까지 확인하는 이유는 '에라토스테네스의 체 혹은 소수판정 시 제곱근 까지만 확인하면 되는 이유' 글에 적어두었다(링크). 코드 : github import java.io.BufferedReader;.. 2022. 7. 5.