※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 7567번 문제인 그릇이다.
문제는 아래 링크를 확인하자.
7567번: 그릇
그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다.
www.acmicpc.net
이 문제는 다음과 같이 단순하게 구현할 수 있다.
1) 처음에 '('과 ')'가 아닌 아무 문자 하나를 저장해둔다.
2-1) 문자열을 읽으면서, 저장된 문자와 다른 문자가 나온다면 그 저장된 문자를 현재 문자로 바꾸고 답에 10을 더한다. (맨 처음 접시를 내려놓는 경우 또는 접시를 반대로 놓는 경우)
2-2) 같은 문자가 나온다면 답에 5를 더한다. (접시를 포개어 놓는 경우)
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
int main()
{
string s;
int slen;
cin >> s;
slen = s.length();
char now = 'x'; // 초기상태: 아직 접시가 놓이지 않음
int ans = 0;
for (int i = 0;i < slen;i++) {
if (now != s[i]) { // 같지 않은 경우: 아직 접시를 안 놓았거나 접시가 반대방향
now = s[i];
ans += 10;
}
else ans += 5; // 같은 경우: 접시가 같은 방향
}
cout << ans;
return 0;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 14264 // C++] 정육각형과 삼각형 (0) | 2021.01.17 |
---|---|
[BOJ 7570 // C++] 줄 세우기 (0) | 2021.01.16 |
[BOJ 7571 // C++] 점 모으기 (0) | 2021.01.14 |
[BOJ 1699 // C++] 제곱수의 합 (0) | 2021.01.13 |
[BOJ 9465 // C++] 스티커 (0) | 2021.01.12 |