문제 링크입니다: https://www.acmicpc.net/problem/2816
스페셜 저지 문제였으므로 여러가지 답이 허용되는 문제였습니다.
따라서 저는 1번과 4번만을 이용해 풀었습니다.
알고리즘은 아래와 같습니다.
1. 우선 KBS1과 KBS2가 몇 번째 인덱스에 위치하는지를 파악합니다.
2. KBS1을 찾을 때까지 1번을 눌러 화살표를 내립니다.
3. KBS1을 제일 위까지 4번을 통해 올립니다.
4. KBS2를 찾을 때까지 1번을 눌러 화살표를 내립니다.(이 때, KBS1과 KBS2가 정렬되어있는지를 파악해서 적절하게 1번을 누릅니다.)
5. 4번을 눌러 KBS2를 KBS1 바로 다음까지 올립니다.
#include <iostream>
#include <string>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int N;
cin >> N;
int idx1 = -1, idx2 = -1;
for (int i = 0; i < N; i++)
{
string s;
cin >> s;
if (s == "KBS1")
idx1 = i;
else if (s == "KBS2")
idx2 = i;
}
int inOrder = idx1 > idx2 ? 1 : 0; //KBS1과 KBS2가 정렬되어있는가
for (int i = 0; i < idx1; i++)
cout << "1";
for (int i = 0; i < idx1; i++)
cout << "4";
for (int i = 0; i < idx2 + inOrder; i++)
cout << "1";
//KBS1보다 한칸 아래
for (int i = 0; i < idx2 + inOrder - 1; i++)
cout << "4";
cout << "\n";
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 2840번 행운의 바퀴 (0) | 2018.10.29 |
---|---|
백준 5555번 반지 (0) | 2018.10.29 |
백준 3613번 Java vs C++ (0) | 2018.10.28 |
백준 2810번 컵홀더 (0) | 2018.10.28 |
백준 9536번 여우는 어떻게 울지? (0) | 2018.10.28 |