PS [ 1일차]

Daniel·2022년 7월 16일
0

PS

목록 보기
1/32
post-thumbnail

해결코드

문제 번호 : 1032

package Main;

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner (System.in);
		// 문자열을 입력할 수
		int testcase = in.nextInt();
		
		// 문자열을 저장할 배열의 크
		String [] stringArray = new String [testcase];
			
		// 간단한 입력
		for (int i = 0 ;i < stringArray.length; i ++) {
			stringArray[i] = in.next();
		}

		// StringBuilder를 생성하기 위한 선언
		String result = stringArray[0];
		StringBuilder sb = new StringBuilder(result);
	
		
		// 열 탐색 0번 배열 1번 인덱스 
		
		// 출력부 
		for (int row = 0; row < stringArray.length-1 ; row++) {
			for (int col = 0; col <stringArray[0].length() ;col++) {
				char nowIndex = stringArray[row].charAt(col);
				char nextIndex = stringArray[row+1].charAt(col);
				if(nowIndex != nextIndex) {
					// 디버그 코드 
					// System.out.println(sb);
					// System.out.println("now : " + nowIndex + " " + col);
					// System.out.println("next : " + nextIndex + " " + col);
					sb.setCharAt(col, '?');
					//System.out.println("resultValue : " + sb);
				}
			}
		}
		System.out.println(sb);
	}
}

TIL

해결 알고리즘

테스트케이스만큼 배열을 생성하고 그 중 배열의 0번째 문자열을 변수 result 로 선언하고 저장한뒤, 각 배열의 문자열을 비교하여 다른경우 '?' result의 해당 문자를 변경하고 아닌경우 패스, 결과를 result를 출력하는 방법을 생각했다.

StringBuilder를 이용한 방법

// 문자열 선언
String stringbulder = "대충 문자열";

// StringBuilder타입으로 문자열 선언
StringBuilder newString = new StringBuilder(stringbulder);

// StringBuilder의 setCharAt메서드 이용
newString.setCharAt(8, 'a');

// 출력
System.out.println(newString);

StringBuilder를 사용법은 잘 몰라서 대충 긁어쓰긴 했다.

내가 StringBuilder를 사용한 이유는 단순히 코드가 간결해서이다. Scanner이용해서 간단하게 처리하는 방법을 못찾았다... 다른방법이 있을 수 있다.

회고

항상 Scanner을 사용해왔었는데 학교에서 Scanner만 주구장창 써서 그런것도 있다. 문자열 수정 때문에 인터넷에서 정보를 찾다가 StringBuilder를 이용하는 방법이 나와서 이 방법으로 해결해 보았다.

(보통 Scanne와 StringBuilder를 백준사이트에 돌려보면 StringBuilder가 시간 단축면에서 더 좋다. 사람들이 많이 쓰는데는 이유가 있다.)

그리고 한동안 PS를 놓고 사니까 브론즈 문제에서 생각보다 막혔다

profile
폐쇄

0개의 댓글