본문 바로가기
알고리즘/백준

브론즈 문제 풀이

by HWK 2024. 6. 18.

오랜만에 푸는 백준 문제라 감을 되살리는 시간을 가지기로 했다.

어떤 문제를 풀어볼지 생각하다가 해당 블로그 글을 보게 되었다.

코딩테스트 대비를 위한 백준 문제 추천 (tistory.com)

 

코딩테스트 대비를 위한 백준 문제 추천

코딩테스트 대비를 위한 백준 문제 추천 끝 없는 훈련만이 실전에서 흐트럼없이 정답을 향해서 움직일 수 있습니다. (Photo by Specna Arms on Unsplash) 작년 한 해 수많은 코딩테스트를 직접 경험하고

covenant.tistory.com

난이도별, 출제 유형별 알고리즘 문제들이 잘 정리되어 있어서 활용하기로 했다.

오늘 푼 문제는 총 4문제로 2501번 약수 구하기, 3460번 이진수, 10810번 최소최대, 2460번 지능형 기차2 였다.

첫 문제에서는 백준의 제출 형식, 오랜만에 쓰는 Scanner 클래스 이 두가지 이슈로 약간 버벅거렸다.

오늘은 코드를 간소화하기 보다는 일단 감을 좀 살리자는 취지로 진행된 문제풀이이기 때문에 조금 긴 코드가 나온듯 하다.

 

  • 2501번 약수 구하기
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String nk = sc.nextLine();
        String[] spiltNK = nk.split(" ");
    
        int N = Integer.parseInt(spiltNK[0]);
        int K = Integer.parseInt(spiltNK[1]);
    
        for (int i = 1; i <= N/2; i++) {
            if(N % i == 0) {
                K--;
                if(K == 0) {
                    System.out.println(i);
                    System.exit(0);
                }
            }
        }
    
        if (K == 1) {
            System.out.println(N);
        }
        else {
            System.out.println(0);
        }
    }
    String형을 받는데에는 next()가 아닌 nextLine()를 써야 하는걸 잊어서 시간이 조금 걸렸다.프로젝트 뿐만 아니라 Java도 정진해야겠다.
  • 3460번 이진수
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        int[] num = new int[T];
        for (int i = 0; i < T; i++) {
            num[i] = sc.nextInt();
        }
        for (int i = 0; i < T; i++) {
            int one = 0;
            while (num[i] > 0) {
                if (num[i] % 2 == 1) {
                    System.out.print(one + " ");
                }
                num[i] /= 2;
                one++;
            }
            System.out.println();
        }
    }
     이진수도 오랜만에 접하니 반가웠다.
  • 10810번 최소최대
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        sc.nextLine();
        String numString = sc.nextLine();
        String[] numList = numString.split(" ");
        int min = 1000000;
        int max = -1000000;
        for (int i = 0; i < N; i++) {
             int num = Integer.parseInt(numList[i]);
             if (num < min) {
                 min = num;
             }
             if (num > max) {
                 max = num;
             }
        }
        System.out.println(min + " " + max);
    }
  • 2460번 지능형 기차2
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int max = 0;
        int num = 0;
        for (int i = 0; i < 10; i++) {
            String input = sc.nextLine();
            String[] inputList = input.split(" ");
            num -= Integer.parseInt(inputList[0]);
            num += Integer.parseInt(inputList[1]);
            if (num > max) {
                max = num;
            }
        }
        System.out.println(max);
    }

이렇게 총 4문제를 풀어보았다.

매우 쉬운 문제였으나 Java 문법을 얼마나 많이 까먹었는지 체크할 수 있었다.

알고리즘은 꾸준히 풀도록 하자.

'알고리즘 > 백준' 카테고리의 다른 글

1292번, 14888번 - 스택, 큐, 재귀  (0) 2024.06.25
2609번, 2693번 - hashSet, QuickSort  (0) 2024.06.25
1300번 - K번째 수  (0) 2023.07.31
2110번 - 공유기 설치  (0) 2023.07.31
1436번 - 영화감독 숌  (0) 2023.07.29