알고리즘/백준

[파이썬, 자바] BOJ_1475(방 번호)

딱따구르리 2021. 3. 25. 15:59
728x90
반응형

문제

 

www.acmicpc.net/problem/1475

 

1475번: 방 번호

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

www.acmicpc.net


 

해설

 

번호가 6이나 9일 때는 둘 중 하나로 값을 몰아주면 계산하기 편하다.

 

각 해당 번호의 배열 값을 +1 해주고 난 후에는

6, 9 중 값을 몰아줬던 숫자가 짝수인지 홀수인지 판단해야 한다.

짝수라면 세트의 개수가 맞아 떨어질테고

홀수라면 1개 더 필요하기 때문이다.

 

위의 과정을 모두 끝낸 후엔,

배열의 값 중 최댓값을 찾으면 끝난다.


코드

 

-파이썬

#백준 1475(방 번호)

set = [0] * 9
num = list(map(int, str(input())))  #방 번호

#해당 번호 ++
for i in num:
    if i == 6 or i == 9:
        set[6] += 1  #6으로 값 몰아주기
    else:
        set[i] += 1

#6 + 9의 개수가 짝수인지 홀수인지 확인
if set[6] % 2 == 0:
    set[6] = set[6] // 2
else:
    set[6] = (set[6] // 2) + 1

print(max(set))

 

-자바

//백준 1475(방 번호)
import java.util.*;
import java.io.*;

public class Boj_1475 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String num = br.readLine();  //방 번호
		int[] set = new int[10];
		int max = 0;
		int temp = 0;
				
		for(int i = 0; i < num.length(); i++) {
			temp = num.charAt(i) - '0';
			set[temp] ++;  //해당 번호 ++
		}
		
		set[6] = set[6] + set[9];  //6, 9 하나로 합치기
		set[9] = 0;  //9값은 폐기
		
		if (set[6] % 2 == 0) {  //6 + 9의 개수가 짝수일 때
			set[6] = set[6] / 2;
		}		
		else {  //홀수일 때
			set[6] = (set[6] / 2) + 1;
		}
		
		for(int i : set) {  //0부터 비교해가면서 max값 찾기
			max = Math.max(max, i);
		}

		System.out.println(max);

	}

}
728x90
반응형