ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • BOJ) 방 번호
    알고리즘/백준 2020. 6. 23. 13:39
    반응형

    방 번호

     

    1475번: 방 번호

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

    www.acmicpc.net

    넋두리

     

    작년에 풀었던 문제였는데, 코테 준비를 조금이나마 진행했으니까 더 좋은 방법으로 풀지 않을까 싶어서 풀어봤다.

    저번에 풀었을 때 보다 시간이 아주 조금 늘었고, 메모리 사용량이 아주 조금 줄었다.

    결과적으로는 똑같은 것 같다... ㅋㅋㅋㅋㅋㅋ

    사실 크게 복잡한 문제가 아니라서 판단하기에 적합하지는 않지만, 그래도 조금 더 열심히 하자

     

    코드 1

     

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    import java.util.*;
    
    public class Main {
        public static int[] cnts;
        
        private static void printResult(int num) {
            if(num ==0) {
                cnts[0] =1;
            }
            
            while(num !=0) {
                int tmp = num%10;
                cnts[tmp]++;
                num /=10;
            }
            
            int max =0;
            
            for(int i=0; i<10; i++) {
                
                if(i ==6 || i ==9) {
                    int tmp = cnts[6] + cnts[9];
                    tmp = tmp%2==0 ? tmp/2 : tmp/2 +1;
                    max =Math.max(max, tmp);
                } else {
                    max = Math.max(max, cnts[i]);
                }
            }
            System.out.println(max);
        }
        
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            
            int roomNum = Integer.parseInt(br.readLine());
            cnts = new int[10];
            
            printResult(roomNum);
            
            br.close();
        }
    }

     

    코드 2

     

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Main {
        final static int MAX = 10, SIX = 6, NINE =9;
        final static int ZERO = 48;
    
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String numStr = br.readLine();
            System.out.println(solution(numStr));
    
            br.close();
        }
    
        private static int solution(String numStr) {
            int[] numArr = new int[MAX];
    
            for(int i=0; i<numStr.length(); i++) {
                numArr[numStr.charAt(i)-ZERO]++;
            }
    
            if(numArr[SIX] > numArr[NINE]) {
                numArr = makeShare(SIX, NINE, numArr);
            } else if(numArr[NINE] > numArr[SIX]) {
                numArr = makeShare(NINE, SIX, numArr);
            }
    
            int answer =numArr[0];
            for(int i=1; i<MAX; i++) {
                answer = Math.max(answer, numArr[i]);
            }
            return answer;
        }
    
        private static int[] makeShare(int idx1, int idx2, int[] numArr) {
            int share = (numArr[idx1] - numArr[idx2])/2;
            numArr[idx1] -= share;
            numArr[idx2] += share;
    
            return numArr;
        }
    }

     

    반응형

    '알고리즘 > 백준' 카테고리의 다른 글

    BOJ) 수 이어 쓰기 2  (3) 2020.06.23
    BOJ) 상자넣기  (0) 2020.06.23
    BOJ) 블랙잭  (0) 2020.06.23
    BOJ) 연결 요소의 개수  (0) 2020.06.22
    BOJ) 치킨 쿠폰  (0) 2020.06.22

    댓글

Designed by Tistory.