[백준1475] 방번호

yoontaeng·2022년 7월 6일
0
post-thumbnail

📎 문제링크

https://www.acmicpc.net/problem/1475

📄 문제설명

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

입력

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

📝 문제풀이

입력받은 숫자가 담긴 문자열을 하나씩 나눠서 0~9를 의미하는 num배열에 각 수가 맞으면 정수로 변환하여 배열의 값을 높여준다. 이때 6과9는 서로 바꿀수 있으므로 num[6]에다 넣어주고 2로 나눈 나머지와 몫의값으로 그값을 계산한다. 결국에는 num배열에 속한 값중 가장 높은값이 set의 개수가 되므로 정렬하여 마지막 배열값을 출력 하면 된다.

💡 Code

초기코드

import java.util.Scanner;
import java.util.Arrays;
public class Main{
   public static int solution(String str){
         
	   int num[]= new int[10];
	  
        for(int i=0; i< str.length();i++){
            char a = str.charAt(i);
        	if(a=='9') a='6';
        	int ia = a-'0'; // char를 int로 변환
       
             num[ia]++;
                
        }
        num[6]=num[6]/2+num[6]%2;
        Arrays.sort(num);
        return num[9];
    }   
    
    public static void main(String[]args){
        Scanner sc= new Scanner(System.in);
        String str= sc.nextLine();
        System.out.println(solution(str)); 
    }   
          
}

수정코드

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Arrays;

public class Main{
   public static int solution(String str){
         
	   int num[]= new int[10];
	  
        for(int i=0; i< str.length();i++){
            char a = str.charAt(i);
           ///if(a=='9') a='6';  
        	int ia = a-'0'; // char를 int로 변환
       
             num[ia]++;
                
        }
        num[6]=num[6]/2+num[6]%2;
        Arrays.sort(num);
        return num[9];
    }   
    
    public static void main(String[]args)throws IOException{
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       String N = br.readLine();
       N=N.replace('9','6');
        
        System.out.println(solution(N)); 
    }   
      
    
}

👍 Comment

scanner를 사용하니 실행시간이 너무 오래걸렸고 그래서 BufferedReader로 바꾸니 buffer를 사용하여 실행시간이 확실히 줄었음을 알게되었다. 또한 replace를 사용해 문자열에서 미리 9를 6으로 변환시켰다. 또한 throws IOException 을 사용하여 예외 처리를 해주었다.

profile
병아리개발자

0개의 댓글