선택은 나의 것

[BOJ 백준] 4378번 트ㅏㅊ; 본문

☽ Algorithm/BOJ

[BOJ 백준] 4378번 트ㅏㅊ;

Algoribi 2020. 5. 18. 16:21

문제

BOJ 4378 : https://www.acmicpc.net/problem/4378

 

4378번: 트ㅏㅊ;

문제 가끔, 그러나 때때로, 우리들은 키보드에서 양손을 오른쪽으로 한 칸씩 이동한 상태로 두고 타자를 치는 경우가 있다. 즉, "ACMICPC.NET"을 위와 같은 방법으로 치게 되면 "SV,OV[V/MRY"이라는 이��

www.acmicpc.net

접근

먼저 키보드의 행 별로 배열을 만들어 키보드의 모양을 저장해 주자.

다음으로 getline을 이용해 EOF를 만날 때까지 입력을 받는다. EOF처리 방법에 대해선 [C++] EOF(End-Of-File) 처리 방법을 참고하길 바란다.

입력받은 문자열을 이루고 있는 각 문자들에 대해 키보드에서의 위치를 찾은 다음 그 위치에서 한 칸 왼쪽에 위치하는 문자로 바꿔서 출력해 준다.

 

코드

// algorithm study
// BOJ_4378_트ㅏㅊ;

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
    vector<string> Keyboard = {"`1234567890-=", "QWERTYUIOP[]\\", "ASDFGHJKL;'", "ZXCVBNM,./"};
    string s;
    while (getline(cin, s)) {
        for (char c : s) {
            if (c == ' ')
                cout << " ";
            else {
                int chk = 0;
                for (int i = 0; i < Keyboard.size(); i++) {
                    for (int j = 0; j < Keyboard[i].size(); j++) {
                        if (c == Keyboard[i][j]) {
                            cout << Keyboard[i][j - 1];
                            chk = 1;
                            break;
                        }
                    }
                    if (chk == 1)
                        break;
                }
            }
        }
        cout << "\n";
    }
    return 0;
}

 

깃 허브 주소 : https://github.com/algoribi/algorithm-study

'☽ Algorithm > BOJ' 카테고리의 다른 글

[BOJ 백준] 2210번 숫자판 점프  (0) 2020.05.20
[BOJ 백준] 10951번 A+B - 4  (0) 2020.05.19
[BOJ 백준] 2169번 로봇 조종하기  (0) 2020.05.15
[BOJ 백준] 2304번 창고 다각형  (0) 2020.05.13
[BOJ 백준] 13565번 침투  (0) 2020.05.13
Comments