곽로그
[백준 1475] 방 번호 본문
반응형
1475번: 방 번호
첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.
www.acmicpc.net
접근방법
처음에 문제 이해를 잘못해서 다른 숫자를 고려하지 않고 6,9의 개수만 고려했다. 그러니까 예를들어 입력이 12369이면 1,2,3,(6,9) 이렇게 4세트. 처음에 좀 시간이 걸려도 문제를 제대로 이해해야 한다. 당연한 얘기지만.
다시.
결국 이 문제에서는 중복된 숫자가 몇개이냐가 관건이다. 예를들어 입력이 112233445577777이라고 했을때 1은 2개, 2는 2개, 3은 2개 4는 2개, 5는 2개 7은 5개 이므로 7때문에 5세트가 필요하다. 즉 중복된 숫자의 개수가 가장 많은 것 만큼 세트가 필요하다는 말이 된다. 그럼 여기서 6,9에 대한 경우는 따로 생각하고 나머지 0,1,2,3,4,5,7,8중 중복된 숫자가 많은 것과 6,9에서 필요한 세트수를 비교한 다음 둘중 큰 수를 출력하면 된다.
여기서 배운 거 하나는, 자바에는 기본형을 다른 기본형으로 변환하는 메서드를 제공하지 않는다. Integer.parseInt는 String을 int로 변환하는 거다. 이 문제에서 입력을 String으로 받고 charAt을이용해 char를 int로 바꾸려면 아스키코드를 이용해야 한다. 즉, charAt(i)-48로 char를 int로 바꿔야한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
String numbers=in.next();
int max=0;
int sixAndNine=0;
int[] numberArray=new int[numbers.length()];
int[] zeroToNine=new int[10];
for(int i=0;i<numbers.length();i++) {
numberArray[i]=numbers.charAt(i)-48;
zeroToNine[numberArray[i]]++;
}
for(int i=0;i<zeroToNine.length;i++) {
if(i==6 || i==9) {
continue;
}
else {
if(zeroToNine[i]>=max) {
max=zeroToNine[i];
}
}
}
sixAndNine=((zeroToNine[6]+zeroToNine[9])%2==0)?(zeroToNine[6]+zeroToNine[9])/2:(zeroToNine[6]+zeroToNine[9])/2+1;
max=(max>=sixAndNine)?max:sixAndNine;
System.out.println(max);
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
| [백준 2753] 윤년 (0) | 2019.10.27 |
|---|---|
| [백준 1011] Fly me to the Alpha Centauri (0) | 2019.05.15 |
| [백준 10250] ACM호텔 (0) | 2019.05.07 |
| [백준 2839] 설탕배달 (0) | 2019.05.03 |
| [백준 1977] 완전제곱수 (0) | 2019.05.03 |
Comments