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