[백준] - 1475번: 방 번호(Java)

병찬·2022년 6월 28일
0

Baekjoon Online Judge

목록 보기
12/18
post-thumbnail

문제📝


풀이💡

  • arr 배열에 0부터 9의 숫자를 담는다.
  • 방 번호가 0보다 클 때까지 방 번호를 10으로 나누었을 때 나머지를 k에 넣어주고 k가 6이나 9면 arr[9]가 증가하고 아니면 arr[k]가 증가하며 숫자는 10으로 나누어준다.
  • 0~8까지의 숫자 중 최대값 변수와 6 또는 9의 변수 중 최대값을 구해서 출력한다.

코드💻

// 백준 Silver5 - 1475(방 번호)
// 문제링크: https://www.acmicpc.net/problem/1475

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int ans = 0;
		int[] arr = new int[10]; // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 담기
		int number = num;
		
		while(number>0) {         // num이 0보다 클 때까지
			int k =number%10;     
			if(k==6 || k==9) { // 6이나 9일때 arr[9] 증가
				arr[9]++;
			}
			else {
				arr[k]++;     // arr[k] 증가
			}
			number /= 10;
		}
		
		int max = 0;         // 0~8까지의 숫자중 최대값 변수
		for(int i=0; i<arr.length-1; i++) {
			if(max <= arr[i]) {
				max = arr[i];
			}
		}
		
		int six_nine = 0;  // 6 또는 9
		
		if(arr[9]%2 == 0) {  // 짝수 홀수 구분
			six_nine = arr[9]/2;
		}
		else {
			six_nine = arr[9]/2+1;
		}

		ans = (int) Math.max(max, six_nine); // 둘 중의 최대값 구하기
		if(num==0) 
			ans = 1;
		System.out.println(ans);
    }
}

결과😎


느낀점👨‍💻

겉으로 보기엔 쉬운 문제인 줄 알았는데 나름의 알고리즘을 짜서 문제를 해결해야 되서 조금의 시간이 걸렸던 것 같다.


Sinbmil의 알고리즘 문제 코드

-> https://github.com/Sinbmil/Algorithm-Study

profile
코딩을 열심히 하고 있습니다:)

0개의 댓글