티스토리 뷰

생각

Github - https://github.com/hellojdh/Code/blob/master/src/swexpert/d3/Q7728.java 숫자가 주어진다 얼마나 다양한 숫자로 이루어져있는지 개수를 출력하여라.


처음 생각

문자열로 주어지는 숫자의 각 자리수를 다룰수 있는지를 보는 문제인것 같다.


다음 생각

문자열의 각자리를 charAt을 통해 읽으면서 해당 값은 아스키코드이므로 '0'을 빼주어 원래 숫자를 얻을 수 있도록 하였다.

▶ 해당 숫자가 이미 사용된 숫자인지를 파악하기위해서 int[10] 즉, 0~9까지 체크할 수 있는 배열을 만들어 문자열에서 해당 숫자가 이미 사용되어있는지를 체크해주었다.

▶ 이경우 숫자의 체크를 위해 배열값을 바꿔주어야하는데 배열을 매번 초기화하면 배열이 클경우 효율이 떨어지므로 매번 바뀌는 값인 테스트 케이스 값을 통해 사용한 숫자인지 체크를 해주었다.


방안

1) Java 풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package swexpert.d3;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
 
public class Q7728 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
 
        int[] arr = new int[10];
        int tc = Integer.parseInt(br.readLine());
        for(int z = 1; z <= tc; z++){
            String n = br.readLine();
            int len = n.length();
            int result = 0;
 
            for(int i = 0; i < len; i++){
                int t = n.charAt(i)-'0';
                if(arr[t]!=z){
                    result++;
                    arr[t] = z;
                }
            }
 
            sb.append('#').append(z).append(' ').append(result).append('\n');
        }
        System.out.println(sb);
    }// end of main
}// end of class
 
cs




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday