곽로그
[백준 1475] 방 번호 본문
반응형
접근방법
처음에 문제 이해를 잘못해서 다른 숫자를 고려하지 않고 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