22.02.26 백준 20114번

김민혁·2022년 2월 26일
0

하루한문제

목록 보기
17/22

문제

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String input = sc.nextLine();
		
		int n = Integer.parseInt(input.split(" ")[0]);
		int h = Integer.parseInt(input.split(" ")[1]);
		int w = Integer.parseInt(input.split(" ")[2]);
		
		String[] arr = new String[h];
		int cnt = 0;
		char[] arr_char = new char[n];
		
		for (int i = 0; i < arr_char.length; i++) {
			arr_char[i] = '1';
		}
		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.next();
		}
		for (int i = 0; i < h; i++) {
			for (int j = 0; j < n*w; j+=w) {
				
				for (int k = 0; k < w; k++) {
					if(arr[i].substring(j, j+w).charAt(k)!='?') {
						arr_char[j/w] = arr[i].substring(j, j+w).charAt(k);
						break;
					} else {
						cnt++;
					}
					
					if(cnt==w) {
						cnt = 0;
						if(arr_char[j/w]=='1') {
							arr_char[j/w] = '?';
						}
						
						
					}
				}
				
			}
			
		}
		System.out.println(new String(arr_char));
		
	}
}

접근방식 -> 정답이 담길 char[] 을 정의하고 입력받는 문자열을 w개씩 잘라서 잘린 문자열에 '?'가 아닌 문자를 char[]에 담는다
'?'만 나왔으면 '?'를 담는다 여기서 if문은 정답 문자가 char[]에 담겼는데 다음 입력에 ?가 담기는 경우를 막아준다.

특이사항 -> char[]을 '1'로 초기화하지않고 진행했을때는 if문에서 비교를 할수가 없었다 char[]의 default 값은 '0'이라고 나와있는데 프린트를 찍어보면 공백문자가 찍힌다 그래서 공백문자로 if문을 태웠더니 또 if문을 제대로 타지를 않았다 ;;; 이거는 좀더 알아봐야겠다

22.02.27 추가 -> char배열의 default 값이 '0'이아니고 정수 0이였다!! 따라서 1로초기화하지않고 if(arr_char[j/w]==0) 으로 비교를 하면 정상적으로 비교가 된다! 또 공백문자와 아스키코드 0은 문자였던것이다!

profile
안녕하세요 김민혁입니다.

0개의 댓글