코딩테스트/백준 27

[백준 JAVA] 9506 - 약수들의 합

문제 자체는 쉬웠지만, 문제 해석을 잘못 해석해 애먹은 문제였다..! 먼저 내가 생각한 로직은 이렇다.while(n ArrayList 적재for (sum += ArrayList.get(i))sum == num -> 약수 합 출력sum != num -> n is NOT perfect 출력 해당 로직을 보면 알다시피 완전수를 구하는 문제였는데, 필자는 그냥 테스트 케이스만 보고 순서대로 반복문으로 약수의 누적합을 비교해서 출력해 버린 것이었다! (맙소사,,) 먼저 내가 처음 작성한 코드다.import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { ..

[백준 JAVA] 2501 - 약수 구하기

해당 문제도 쉬운 문제였다! 해당 문제는 시간 복잡도와 메모리 제한은 10,000개 이하이기 때문에 신경 안 써도 된다고 판단했다! 내가 생각한 로직이다.for (i = 0; i 배열에 i값 적재출력값에 arr[k-1]값 출력 여기서 생각한건, 기본적인 arr를 사용한다면 k번째의 값을 구하는 로직이 복잡해지기 때문에 ArrayList로 구현했다![최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in..

[백준 JAVA] 5086 - 배수와 약수

이번 문제는 배수와 약수 문제로 쉬운 문제였다! 여기서 의문이 있었는데, 만약 예시로 15 15라고 했을 때, 약수와 배수 둘 다여서 고민을 했지만, 문제를 잘 보면 두 수가 같은 경우는 없다고 제약조건이 있었다! 시간제한과 메모리제한은 테스트 케이스가 작아 신경 안 써도 된다고 판단했다! 내가 생각한 로직이다.token2 % token1 == 0 -> factortoken1 % token2 == 0 -> multiple아니면 neither [최종 코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader b..

[백준 JAVA] 2745 - 진법 변환

구현 자체는 쉬운 문제였지만, 문제 자체가 나에겐 어려운 문제였다. 진법 변환에 미숙한 나에게는 굉장히 어려웠다. 급하게 해당 진법 변환에 대해 공부한 뒤, 문제를 풀게 되었다. 시간제한과 메모리 제한은 신경 안 써도 된다고 판단했다. 내가 생각한 로직이다.10진법이 문제.만약 ZZZZZ라면, Z = 35, 아스키코드로는 90, 즉 -55만약 0 ~ 9라면, 아스키 코드는 -48 or -'0' 해당 문제를 푸려면 아스키 코드와 진법에 대해 잘 알아야 되는 게 포인트다! 최종코드import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { Buf..

[백준 JAVA] 2903 - 중앙 이동 알고리즘

생각보다 생각을 많이 한 문제였다. 처음에는 그냥 머릿속으로 슥슥 푸려고 했는데, 패턴을 찾을 듯 말 듯하다 결국 포기하고 펜을 들고 종이에 써서 생각한 문제였다. 시간제한과 메모리 제한은 입력 값이 매우 작아 구현에 어려움은 없다고 판단했다. 그렇게 나온 로직이 이렇다.기준 31이 증가할 때 마다 *2 - 1 종이로 쓰면서 생각하니깐 바로 문제가 풀렸다! [최종코드]import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int..

[백준 JAVA] 2292 - 벌집

내 기준 생각보다 어려운 문제였다. 해당 문제를 분석하던 중, 6의 배수로 이루어졌다는 것을 알게 되었지만, 그 후의 로직을 고민하는데 오랜 시간이 걸렸다.계속 고민하다가 정 안되서 살짝 힌트를 보게 되었다. 나의 로직 구현이다1 ~ 7 (6) - 18 ~ 19 (12) - 220 ~ 37 (18) - 338 ~ 61(24) - 425일 때,1. 62 123 184 24 문제 분석했지만, 중간에 포기한 것을 볼 수 있다. 힌트를 보니, 최솟값을 염두해두고 로직을 짜는 것을 보았다. [최종코드]import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReade..

[백준 JAVA] 2869 - 달팽이는 올라가고 싶다

시간초과에 대해 생각해 보라는 재밌는 문제였다. 3년전에 푼 기억이 있지만, 너무 오래되어서 까먹었다,, 처음 한다는 느낌으로 다시 이 문제를 접하게 되었다. 여기서 중요한 점은 시간 제한이 0.25초인 점이다. 그래서 나는 혹시 몰라 틀린다는 마인드로 시간제한을 생각하지 않은 로직을 짜보았다.while (num  import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenize..

[백준 JAVA] 2720 - 세탁소 사장 동혁

매우 쉬운 문제였다. 나의 로직 구현이다거스름돈은 n순서대로 Q(0.25), D(0.10), N(0.05), P(0.01) 일 때,순서대로 n/Q, n/D, n/N 그 나머지는 p로 계산해서 배열로 반환 그런데 구현을 해보니, 실제 예제에선 소숫점 단위가 아닌, 정수형으로 받기 때문에 나누기도 정수형으로 바꿔야 했다.[최종코드]import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(b..

[백준 JAVA] 2536 - 색종이

문제 해석을 제외하면 구현 자체는 쉬운 문제였다. 수학 문제만 보면 울렁증이 올라와 이해가 안 되어 GPT를 통해 문제 해석을 봐버렸다,,  문제를 해석해보니 구현 자체는 매우 쉬웠다. 또한 총배열의 개수가 100*100이기 때문에 시간초과와 메모리 제한은 상관없다고 판단했다! 나의 구현 로직 설명이다.각 좌표의 값을 받아 해당 배열을 기준으로 10*10을 boolean으로 표시입력값에 띄어쓰기가 있으니 StringTokenizer 사용중복되면 continue마지막에 처음부터 끝까지 ture일때 count++ [최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws..

[백준 JAVA] 10798 - 세로읽기

생각보다 어렵고 문법 이해를 도와준 고마운 문제이다. 처음에 헤매었던 것은 문자열을 얼마나 받을지가 정해지지 않는다는 점이었다.어떤식으로어떤 식으로 구현을 할까 생각하다가 나의 자바 지식끈이 짧아 다른 문제에서 어떤 식으로 처리하는 지만 참고를 했다. 보통의 사람들은 해당 예제의 열 갯수로 지정했더라. 내가 생각한 로직은 이렇다.이중 for문으로 2차원배열 구현, 띄어쓰기가 없으니 StringTokenizer 사용x모두 입력 받고, 똑같이 이중 for문으로 세로 출력 이 문제 또한 입력값이 매우 작아 시간제한과 문자열 제한은 신경 안 써도 된다고 판단했다. 먼저 내가 구현한 코드이다.import java.io.*;public class Main { public static void main(Stri..