백준 28

[백준 JAVA] 1978 - 소수 찾기

기본적인 소수 찾기 문제이다! 매우 쉬운 문제이며 필자는 예전에 소수문제를 에라토스테네스의 체를 공부해서 푼 기억이 난다.이참에 다시 복습할 겸, 간단한 문제여도 해당 알고리즘을 사용하기로 결심했다! 에라토스테네스의 체는 시간복잡도가 O(n * log  long n)이기 때문에 더더욱 시간 복잡도는 충분하다고 생각했다.또한 N의 수가 1000개 이하의 자연수라는 점에서 메모리 제한도 충분하다고 생각했다. 이번에는 로직은 따로 없다. [최종코드]import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = ne..

[백준 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..