Notice
Recent Posts
Recent Comments
Link
05-08 20:45
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

<<개발일지>>

[백준/1032/명령 프롬프트] 본문

코딩테스트

[백준/1032/명령 프롬프트]

개발하는지호 2024. 3. 18. 22:52

https://www.acmicpc.net/problem/1032

 

1032번: 명령 프롬프트

첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은

www.acmicpc.net

 

 

<<풀이>>

 

이 문제는 맨 처음 것을 toCharArray로 변형 한 뒤 그 다음 부터 각각의 char와 비교하면서 다르면 '?'로 바뀌게 함으로써

 

구할 수 있는 쉬운 문제이다.

 

그리고 기존에는 무조건 solution 값에 return값을 줘서 구했는데 void로 해서 바로 콘솔에 찍게 만들 수도 있다.

 

이런 점은 나중에도 유용하게 이용하자.


import java.util.Scanner;

class Main {
    private void solution(String[] arr, int n) {

        char[] target = arr[0].toCharArray();
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < target.length; j++) {
                if (target[j] != arr[i].charAt(j)) target[j] = '?';
            }
        }
    
        for (char x : target) System.out.print(x);

    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] arr = new String[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.next();
        }
        T.solution(arr, n);
    }
}

 

 

 

근데 이상한 점을 발견했는데

 

바로 이 코드이다. 나는 처음에 return 값 String을 반환해서 주려고 했기에 x + answer 로 최종적으로 답을 구하려고 했다.

 

근데

 

Not a statement

 

이라는 문구가 뜨면서 에러가 생겼다.


import java.util.Scanner;

class Main {
    private String solution(String[] arr, int n) {

        char[] target = arr[0].toCharArray();
        for (int i = 1; i < n; i++) {
            for (int j = 0; j < target.length; j++) {
                if (target[j] != arr[i].charAt(j)) target[j] = '?';
            }
        }
        String answer = "";
        for (char x : target) x + answer;
        
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] arr = new String[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.next();
        }

        System.out.println( T.solution(arr, n));
       
    }
    
}

'코딩테스트' 카테고리의 다른 글

[백준/1010/다리 놓기]  (6) 2024.03.19
[백준/1009/분산처리]  (2) 2024.03.19
[인프런/DFS/8. 수열 추측하기]  (4) 2024.03.15
[백준/1152/단어의 개수/브론즈2]  (1) 2024.03.14
[백준/1141/접두사/실버1]  (4) 2024.03.13