[백준] 방 번호 JAVA
은근히 신경쓸 것들이 있는 문제였다.
처음에는 숫자로 받았다가, 앞에 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);
}
}