백준_방 번호문제
풀이 코드

은근히 신경쓸 것들이 있는 문제였다.
처음에는 숫자로 받았다가, 앞에 0이 들어오면 무시당하는 문제가 있어서 String으로 받도록 바꿨다.

또 다음 방식은, 그 숫자를 방문하면 boolean 배열에 true 표시를 해줬는데, 방문했을 때 true인 경우 Set를 늘리고 전체 배열을 초기화 했더니 11223699와 같은 경우에는 2가 아닌 4로 출력되었다.

이후 방식을 지금과 같이 바꾸었다.

# 풀이

String으로 방 번호를 받아서 숫자 각각의 배열 값을 증가시킨다.
이 때 배열에 방문한 횟수가 세트의 개수가 된다. 따라서 가장 많이 방문한 횟수를 찾아서 출력하면 세트의 개수가 되는 것이다.

여기서 6과 9는 동일하게 사용할 수 있기 때문에, 만약 6과 9의 경우에는 더 작은 쪽의 숫자를 증가시키도록 했다.

배열 값 증가 작업이 끝나면, 배열들 중 가장 많이 방문한 숫자를 찾아 출력한다.

# 코드

import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		
		String[] sRoomNum = sc.nextLine().split("");
		int[] nNum = new int[10];
		int nSet = 0;
		
		for(int i = 0; i < sRoomNum.length; i++) {
			int nCurrentNum = Integer.parseInt(sRoomNum[i]);

			if(nCurrentNum == 9) {
				if(nNum[6] < nNum[9]) nNum[6]++;
				else nNum[9]++;
			}else if(nCurrentNum == 6) {
				if(nNum[9] < nNum[6]) nNum[9]++;
				else nNum[6]++;
			}else {
				nNum[nCurrentNum]++;
			}
		}
		
		for(int i = 0; i < 10; i++) {
			if(nSet < nNum[i]) nSet = nNum[i];
		}
		
		System.out.println(nSet);
	}
}
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
Last Updated: 1/3/2021, 2:26:34 PM