Coding Is My Life

코딩은 인생

59 Coding Group

[12월 2주차 문제풀이/C++]

산기대 컴공 2020. 12. 15. 23:44
728x90

문제1

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

 

17122번: 체스

각 테스트 케이스에 대해, 주어진 두 칸이 같은 색이면 “YES”를, 아니면 “NO”를 출력하시오 (따옴표는 제외). 

www.acmicpc.net

문제 해결

체스판을 직접 3차원 배열로 구현하였다. A~H 부여하고 배열에서 직접 찾아 색깔을 알아내고 표기법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
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int map[9][9][2];
void compare(string en,string n,int num){
    int N,M;
    N = stoi(n);
    if(en == "A"){M = 1;}
    else if(en == "B"){M = 2;}
    else if(en == "C"){M = 3;}
    else if(en == "D"){M = 4;}
    else if(en == "E"){M = 5;}
    else if(en == "F"){M = 6;}
    else if(en == "G"){M = 7;}
    else if(en == "H"){M = 8;}
    int a = map[9-N][M][1];
    int b;
    for(int i = 1;i<9;i++){
        for(int j = 1;j<9;j++){
            if(map[i][j][0== num)
            {
                b = map[i][j][1];
                break;
            }
        }
    }
    if(a == b){cout << "YES"<<"\n";}
    else{cout << "NO"<<"\n";}
}
int main(void){
    int cnt = 1,T,color = 1;
    for(int i = 8;i>0;i--){
        for(int j = 1;j<9;j++){
            map[i][j][0= cnt; cnt++;
            map[i][j][1= color;
            if(color == 1){color = 0;}
            else{color = 1;}
        }
    }
    cin >> T;
    for(int i = 0;i<T;i++){
        string od,S_num;
        int num;
        cin >> od >> num;
        S_num = od[1]; od = od[0];
        compare(od,S_num,num);
    }
}
cs

 

문제2

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

 

11399번: ATM

첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)

www.acmicpc.net

문제 해결

간단한 그리디 알고리즘 문제였다. 가장 시간이 적은 사람이 먼저 하는게 이득이므로 정렬을 하고 첫번째 사람부터 시간을 누적하면서 더해나가면 된다.

728x90