알고리즘/구현 & 그리디 & 브루트포스

[백준]JAVA - 1475번: 방 번호

K.두부 2022. 9. 22. 21:19
반응형

https://www.acmicpc.net/problem/1475

 

1475번: 방 번호

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

풀이

오랜만에 쉬운 문제 등장.

 

0-9번까지 숫자를 넣어주기 위한 cnt 배열을 생성해주고, 방 번호 N을 charAt으로 잘라서 배열에 입력해준다.

charAt으로 잘라서 int형 배열에 입력하게 되면 아스키코드 값으로 변환되서 들어오기 때문에 숫자 1로 변경해주기 위해서 아스키코드 값이 48인 '0'을 빼주면서 배열에 입력해준다.

int num = N.charAt(i) - '0';

배열에 입력해줄 때 해당 숫자의 인덱스를 +1 시켜주면 된다. 또한 6과 9를 뒤집어서 사용할 수 있기 때문에 6 혹은 9로 통일해서 넣어주면 된다. 필자는 6으로 통일했다. 통일한 배열의 인덱스는 2로 나눈 몫과 나머지 값을 더해줘야한다. 

 

이후에 정렬을 하고 가장 높은 값을 뽑기 위해서 배열의 마지막 인덱스를 출력한다.

 

<최종코드>

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
        String N = br.readLine();
        int[] cnt = new int[9];
		
        for (int i=0; i<N.length(); i++) {
            int num = N.charAt(i) - '0';
			
            if (num == 9) num = 6; // 9 → 6
            cnt[num]++;
        }
		
        cnt[6] = cnt[6]/2 + cnt[6]%2;
		
        Arrays.sort(cnt);
        System.out.println(cnt[8]);
    }
}
반응형