-
[백준/BOJ] 1032번 : 명령 프롬프트 (JAVA / 자바)백준 2022. 2. 12. 22:44
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1032
1032번: 명령 프롬프트
첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은
www.acmicpc.net
- 문제 -
난이도 브론즈 1 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
결국 입력된 문자열들이 같은 인덱스에 같은 값이 오면 그 값을 같은 인덱스에 출력하고, 같은 인덱스에 다른 값이 오면 같은 인덱스에 ?를 출력하라는 것이다.
입력값들을 저장 할 문자열 배열을 만든다. 배열에 입력값들을 저장 해주고, 그 값들을 0인덱스부터 모든 입력값들이 같은지 판별한다.
필자의 방식은 문자열의 길이는 다 같으니 첫번째 입력값의 길이만큼 반복하는 반복문을 만들고, 그 안에 정수형 변수와 입력값의 갯수의 -1만큼 반복하는 반복문을 만든다. ( 첫번째 값과 두번째값을 비교, 두번째 값과 세번째 값을 비교 식으로 갈건데 그렇게 하면 총 갯수의 -1번만큼 확인하면 충분하기 때문이다.) 반복문 안에 해당 인덱스의 값들이 달라지면 반복문을 종료하는 조건문을 넣고, 조건문 밖에 처음 반복문 안에 선언해둔 정수형 변수에 +1을 해주는 연산을 추가해준다. 조건문을 통해 반복문이 종료되거나 반복문이 끝나기 전까지 계속 정수형 번수에 +1을 해주는 것이다. 그렇게 하면 변수에는 최대 배열의 갯수 -1 만큼 저장 될 것이다. 만약 이 변수가 최댓값이 저장되면 그 인덱스의 값들은 다 같다는 뜻이고, 최댓값이 아니라면 인뎃스의 값들은 다르다는 뜻이다. 그렇게 조건문을 만든다. 최댓값일 경우, 인덱스에 있는 값을 출력, 최댓값이 아닐경우 ?를 출력.
코드를 보자.
-풀이-
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); //입력값들을 저장 할 배열 String[] arr = new String[N]; //입력값들을 배열에 저장 for(int i = 0; i < N; i++) { arr[i] = br.readLine(); } //배열의 값들의 같은 인덱스에 있는 값들을 비교할 반복문과 조건문 for(int i = 0; i < arr[0].length(); i++) { //최종 출력할때 인덱스에 있는 값을 출력할지, ?를 출력할지 구분하기 위한 정수형 변수 int count = 0; for(int j = 0; j < (N - 1); j++) { if(arr[j].charAt(i) != arr[j + 1].charAt(i)) { break; } count++; } if(count == (N - 1)) { System.out.print(arr[0].charAt(i)); }else { System.out.print("?"); } } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 1145번 : 적어도 대부분의 배수 (JAVA / 자바) (0) 2022.02.12 [백준/BOJ] 1110번 : 더하기 사이클 (JAVA / 자바) (0) 2022.02.12 [백준/BOJ] 1100번 : 하얀 칸 (JAVA / 자바) (0) 2022.02.12 [백준/BOJ] 1076번 : 저항 (JAVA / 자바) (0) 2022.02.12 [백준/BOJ] 1075번 : 나누기 (JAVA / 자바) (0) 2022.02.11