반응형

4447번 문제 좋은놈 나쁜놈

 

생각

ascii코드활용 65+ 26 / 97 + 26/
b와 g의 개수에 따라서 하면됨
예전에 했던 문제 1157이랑 비슷한 느낌으로 하면 될듯?
문자는 25자를 넘지않음.
nextline
String으로 받고

for문으로 배열들
charat을 통해 쭉 비교하면 되긴 하는데
이게 효율적일지는 모르겠음
일단구현부터!

 

----------

hint

 

nextInt() 이후 nextLine()을 사용한다면 입력의 오류에 주의할 것,

매 for문마다 good과 bad를 판단해 배열에 문자열을 추가해 저장

 

----------

Solution

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        int[] goodAndBad = new int[2]; // 0 = good, 1 = bad
        Scanner sc = new Scanner(System.in);
        int n;
        n = Integer.parseInt(sc.nextLine());
        check c = new check();
        
        String[] s = new String[n];
    
        for(int i = 0; i < n; i++) {    
            s[i] = sc.nextLine(); //nextInt()를 사용 시 s[0]에 '' 저장 주의
        }
        
        for(int i = 0; i < n; i++) {
            goodAndBad[0= 0;
            goodAndBad[1= 0;
            for (int j = 0; j < s[i].length(); j++) {
                if((int)s[i].charAt(j) == 103) { // g == 103 , G == 71
                    goodAndBad[0]++;
                }
                else if((int)s[i].charAt(j) == 71) { 
                    goodAndBad[0]++;
                }
                else if((int)s[i].charAt(j) == 98) {// b == 98, B == 66
                    goodAndBad[1]++;
                }
                else if((int)s[i].charAt(j) == 66) { 
                    goodAndBad[1]++;
                }
            }
            s[i] = s[i].concat(c.goodOrBad(goodAndBad));
        }
        for(int i = 0; i < n; i++) {
            System.out.println(s[i]);
        }
    }
}
 
class check {
     String goodOrBad(int[] a) {
            if(a[0> a[1]) {
                return " is GOOD";
            }
            else if(a[0< a[1]) {
                return " is A BADDY";
            }
            else if(a[0== a[1]) {
                return " is NEUTRAL";
            }
            return "error";
        }
}
cs

실행시간 - 200ms

 

전에 조금 더 어려웠던 문제(no.1157)를 풀어봐서 구현은 쉬웠다.

그런데 hint에 적었던 nextInt()사용 후 nextLine()을 사용했을 때 문제가 생겨서 해당 문제를 해결하는데 시간이 좀 걸렸고,

결과적으로 해결해서 지식이 늘어난 느낌도 좋고 좋은 경험 한거같다.

 

해당 문제 관련 정리 : nextInt()입력 후 nextLine()사용 시 주의점

반응형

+ Recent posts