문제: https://www.acmicpc.net/problem/2490
: 처음 작성한 코드
#include <iostream>
using namespace std;
int main()
{
int stick[4];
int front;
for (int i = 0; i < 3; i++)
{
front = 0;
for (int j = 0; j < 4; j++)
{
cin >> stick[j];
(stick[j] == 0) && front++;
}
switch (front)
{
case 0:
cout << 'E' << '\n';
break;
case 1:
cout << 'A' << '\n';
break;
case 2:
cout << 'B' << '\n';
break;
case 3:
cout << 'C' << '\n';
break;
case 4:
cout << 'D' << '\n';
break;
}
}
}
각 윷의 상태를 알 수 있게 크기가 4인 배열을 만들었다.
테스트 케이스가 총 3개이니 반복문이 3번 돌게 하고 그 안쪽에서 윷 계산 로직을 작성했다.
총 4개의 윳에 대한 배(0) / 등(1) 상태를 입력받고, 0의 개수를 카운트했다.
0은 배를 나타내므로 1개라면 도, 2개라면 개, ... 이기 때문에 switch문을 사용해서 각 경우에 대한 출력을 해줬다.
그런데 채점 현황을 보다가 다른 분이 작성한 좋은 코드를 발견해서 공유해본다.
#include <iostream>
using namespace std;
int main() {
int n, total;
for (int i = 0; i < 3; i++) {
total = 0;
for (int j = 0; j < 4; j++) {
cin >> n;
total += n;
}
switch (total) {
case 0:
cout << 'D' << '\n';
break;
case 1:
cout << 'C' << '\n';
break;
case 2:
cout << 'B' << '\n';
break;
case 3:
cout << 'A' << '\n';
break;
default:
cout << 'E' << '\n';
}
}
return 0;
}
백준 아이디: ghtn
이분 아이디어로 나도 다시 수정해봤다.
: 다시 수정한 코드
#include <iostream>
using namespace std;
int main()
{
int stick;
int result;
for (int i = 0; i < 3; i++)
{
result = 0;
for (int j = 0; j < 4; j++)
{
cin >> stick;
result += stick;
}
switch (result)
{
case 0:
cout << 'D' << '\n';
break;
case 1:
cout << 'C' << '\n';
break;
case 2:
cout << 'B' << '\n';
break;
case 3:
cout << 'A' << '\n';
break;
case 4:
cout << 'E' << '\n';
break;
}
}
}
'알고리즘' 카테고리의 다른 글
[BOJ] 2562: 최댓값 (1) | 2022.09.21 |
---|---|
[BOJ] 2309: 일곱 난쟁이 (1) | 2022.09.21 |
[BOJ] 10871: X보다 작은 수 (0) | 2022.09.21 |
[HackerRank] Mini-Max Sum (0) | 2021.11.21 |
[HackerRank] Sherlock and Array (0) | 2021.11.21 |