반응형

15953번 문제 상금헌터


처음에 문제가 길어서 무서웠는데 생각보다 별거없던 문제
아직 티어가 낮아서 할만한거만 나오는듯

생각
1회 100명중 21명에게 상금부여
2회 64명중 31명에게 상금부여

각 등수에 맞는 명수로 조건걸고 조건에 따라서 상금을 더해 배열에 저장

 

-------

hint

 

배열은 [1000]
첫줄입력 : 가정횟수 t 1이상 1000이하
t의 갯수만큼 : 두개의 정수 100이하 / 64이하

1회차 : 1 3 6 10 15 21

2회차 : 1 3 7 15 31

--------

반응형

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
57
58
59
60
61
62
63
64
65
66
67
68
import java.util.Scanner;
 
public class Main {
 
    static int prize(int a, int b){
        int[] prizeOne = {500000030000002000000500000300000100000};
        int[] prizeTwo = {512000025600001280000640000320000};
        int prize = 0;
        
        if(a <= 21) {
            if(a == 1) {
                prize += prizeOne[0];
            }else if(a <= 3 && a > 1) {
                prize += prizeOne[1];
            }else if(a <= 6 && a > 3) {
                prize += prizeOne[2];
            }else if(a <= 10 && a > 6) {
                prize += prizeOne[3];
            }else if(a <= 15 && a > 10) {
                prize += prizeOne[4];
            }else if(a <= 21 && a > 15) {
                prize += prizeOne[5];
            }
        }
        if(b <= 31) {
            if(b == 1) {
                prize += prizeTwo[0];
            }else if(b <= 3 && b > 1) {
                prize += prizeTwo[1];
            }else if(b <= 7 && b > 3) {
                prize += prizeTwo[2];
            }else if(b <= 15 && b > 7) {
                prize += prizeTwo[3];
            }else if(b <= 31 && b > 15) {
                prize += prizeTwo[4];
            }
        }
        
        if(prize > 0) {
            return prize;
        }
        return 0;
    }
    
    public static void main(String[] args) {
        int[] arr = new int[1000];
        int count = 0;
        int t = 0;
        int a = 0;
        int b = 0;
        Scanner sc = new Scanner(System.in);
        
        t = sc.nextInt();
        
        for(int i = 0; i < t; i++) {
            a = sc.nextInt();
            b = sc.nextInt();
            
            arr[i] = prize(a, b);
            count++;
        }
        
        for(int i = 0; i < count; i++) {
            System.out.println(arr[i]);
        }    
    }
}
 
cs


첫번째 런타임에러 - 배열범위를 100으로 만들었었음. 조건 확인 잘하기
두번째 실패 - cashprize의 범위설정을 잘못했음. 범위 명확히 조절함
세번째 성공 - 속도 344ms 겁나느림.(클래스 생성해서 계산메소드를 만들었는데 이게 느린거같아 수정해봤음)
네번째 성공 - 속도 340ms 메서드를 같은 클래스 내에 지정해서 static선언 후 돌려봄 ㅋㅋㅋ이게 차이가 있는건지 모르겠음

 

 

 

 

 

 

이정도면 티어 한단계만 올려볼까..?

 

반응형
반응형

10886번 문제 0 = not cute / 1 = cute


생각
n을 처음에 입력을 받고
이후 n개만큼 for문을 돌려 정수를 넣는다 0(귀엽지않다)과 1(귀엽다)로 입력
이후 0 과 1의 수를 어케비교할까 했는데 배열을 2개 만들어서 각각을 0으로 초기화 후
투표를 통해 해당 배열의 수를 ++해주는 것으로 해결하면 될 듯하다.

동표일 경우를 생각했는데 조건에 n은 홀수라 되어있음.

 

-------

 

구현이 쉬웠다 acm호텔이랑 분명 같은 난이돈데... 아직 초보인 나에게도 쉽다느껴질 정도

 

hint - 2개의 배열칸에 카운팅

 

-------

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        int n;
        int pick;
        Scanner sc = new Scanner(System.in);
        int[] vote = {0,0};
        
        n = sc.nextInt();
        
        for(int i = 0; i < n; i++) {
            vote[sc.nextInt()]++;
        }
        
        if(vote[0> vote[1]) {
            System.out.println("Junhee is not cute!");
        }
        else {
            System.out.println("Junhee is cute!");
        }
    }
}
cs

 

반응형
반응형

10250번 문제 acm 호텔


음... 기초적인 구현은 했는데 자꾸 틀렸다나와서 고민을 너무 짧게했음 다음엔 좀 더 생각하기.
그리고 해당 문제풀이에 있어서 쓸데없이 조건을 붙이고 해결했는데 이게 맞는건지 다른 글을 봐야할듯

 

-------
다른 글 확인 결과 - 내가 생각한 조건이 맞았다. 이 블로그에서 서술한 방식이 한가지가 더 있었는데,
알고리즘에서 자주보이는 Scanner입력방식이 아닌 BufferedReader방식이다.
이 방식은 구현하기에 급급한 내겐 아직이라 생각되니 다음 기회에

 

hint - n번째손님 % 층 == 0 의 조건

 

이것도 안된다 싶으면 최종으로 문제확인

 

--------------------

반응형
 
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
public class Main {
 
    public static void main(String[] args) {
        String[] s = new String[1000];
        int t; // n개의 테스트데이터
        int h, w, n; // 한 행의 테스트데이터 각각 호텔의 층, 방, 몇번째 손님인지를 나타냄
        Scanner sc = new Scanner(System.in);
        int num;
        int floor;
        t = sc.nextInt();
        int count = 0;
        
        for(int i = 0; i < t; i++) {
                num = 0;
                floor = 0;
                h = sc.nextInt();
                w = sc.nextInt();
                n = sc.nextInt();
                //알고리즘구현부분
                num = n / h + 1;
                if(n%h == 0) {
                    floor = h;
                    num = num - 1;
                }else floor = n % h;
                if (num >  9) {
                    s[i] = floor + "" + "" + num;
                }
                else s[i] = floor + "" + 0 + "" + num;
                count++;
        }
        for(int i = 0; i < count; i++) {
            System.out.println(s[i]);
        }
    }
}
cs
반응형

+ Recent posts