포트폴리오/백준 알고리즘

[2일차] 백준 15953

taeni-log 2022. 7. 28. 08:48

알고리즘 2일차 오늘의 문제는 상금헌터이다.

문제가 길어 보이지만 난의도는 브로즈 문제이다.

문제는 다음과 같다.

 

출처 : https://www.acmicpc.net/problem/15953

원래 보통은 배열로 풀어야 코드가 간단하도 빠르게 풀린다고 한다.

하지만 아직 배열을 배우지 않아서 내가 풀수 있는 방식으로 문제를 해결했다.

 

내가 생각한 방법은 IF문과 반복문 활용이다.

연도별로 나의 등수를 가정하고  상금을 합하는 방식으로 문제를 해결했다.

내가 생각하는 코드는 아래와 같다.

<실행코드> - JAVA

import
java.util.Scanner;

 
public class Main {
             public static void main(String[] args) {                         
                           Scanner sc = new Scanner(System.in);  
                           int a = sc.nextInt();
                           
                           for( int i =0; i<a; i++) {  
                                        int x = sc.nextInt(); 
                                        int y= sc.nextInt();
                                        int total1=0 ;
                                        int total2=0 ;
                                       
                                        if (x == 1)
                                                     total1+=5000000; // 1등을 했을 때의 상금
                                        else if ( x>= 2 && x<= 3) 
                                                     total1+=3000000; // 2등을 했을 때의 상금
                                        else if ( x>=4 && x<= 6)
                                                     total1+=2000000; // 3등을 했을 때의 상금                               
                                        else if ( x>= 7 && x<= 10 )
                                                     total1+= 500000; // 4등을 했을 때의 상금
                                        else if ( x>= 11 && x<= 15)
                                                     total1+=300000;  // 5등을 했을 때의 상금
                                        else if ( x>= 16 && x<=21)
                                                     total1+=100000;  // 6등을 했을 때의 상금
                                        else
                                                     total1 = 0 ;          
                                       
                                        if (y== 1)
                                                     total2+=5120000;// 1등을 했을 때의 상금
                                        else if ( y>= 2 && y<= 3) 
                                                     total2+=2560000; // 2등을 했을 때의 상금
                                        else if ( y>=4 && y<= 7)
                                                     total2+= 1280000;  // 3등을 했을 때의 상금                                         
                                        else if ( y>= 8 && y<= 15 )
                                                     total2+= 640000;  // 4등을 했을 때의 상금
                                        else if ( y>= 16 && y<= 31)
                                                     total2+= 320000;  // 5등을 했을 때의 상금
                                        else
                                                     total2 = 0 ;          
                                        System.out.println(total1+ total2); //2017 2018 total를 더한값
                           }
                    sc.close(); //Scanner 닫기    
             }
}
 

참고로 코드를 짜면서 배운 내용인데

위에 코드 처럼 나는 잘 몰라서 변수명을 a,b,c 아니면 x,y로 설정했다.  

하지만 나중에 다른 사람이 봐도 알아볼 수 있도록 변수명을 설정하는 게 좋다고 한다.

다음 부터는 변수명을 알아볼 수 있도록 설정하는 연습을 해야겠다.

 

 

 

'포트폴리오 > 백준 알고리즘' 카테고리의 다른 글

[6일차] 백준 _ 2750  (0) 2022.08.01
[5일차] 백준 class1_1000,1001,1008  (0) 2022.07.31
[4일차] 백준_2875  (0) 2022.07.29
[3일차] 백준_17608  (0) 2022.07.29
[1일차] 백준_2739  (0) 2022.07.27