๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœจ Algorithm

[๋ฐฑ์ค€/C++] 5622๋ฒˆ : ๋‹ค์ด์–ผ

by nitronium102 2021. 7. 18.

๋ฌธ์ œ

์ƒ๊ทผ์ด์˜ ํ• ๋จธ๋‹ˆ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์˜ค๋ž˜๋œ ๋‹ค์ด์–ผ ์ „ํ™”๊ธฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

์ „ํ™”๋ฅผ ๊ฑธ๊ณ  ์‹ถ์€ ๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ˆซ์ž๋ฅผ ํ•˜๋‚˜๋ฅผ ๋ˆ„๋ฅธ ๋‹ค์Œ์— ๊ธˆ์† ํ•€์ด ์žˆ๋Š” ๊ณณ ๊นŒ์ง€ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๋ ค์•ผ ํ•œ๋‹ค. ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ ๋ˆ„๋ฅด๋ฉด ๋‹ค์ด์–ผ์ด ์ฒ˜์Œ ์œ„์น˜๋กœ ๋Œ์•„๊ฐ€๊ณ , ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๋ˆ„๋ฅด๋ ค๋ฉด ๋‹ค์ด์–ผ์„ ์ฒ˜์Œ ์œ„์น˜์—์„œ ๋‹ค์‹œ ๋Œ๋ ค์•ผ ํ•œ๋‹ค.

์ˆซ์ž 1์„ ๊ฑธ๋ ค๋ฉด ์ด 2์ดˆ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 1๋ณด๋‹ค ํฐ ์ˆ˜๋ฅผ ๊ฑฐ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ์ด๋ณด๋‹ค ๋” ๊ฑธ๋ฆฌ๋ฉฐ, ํ•œ ์นธ ์˜†์— ์žˆ๋Š” ์ˆซ์ž๋ฅผ ๊ฑธ๊ธฐ ์œ„ํ•ด์„  1์ดˆ์”ฉ ๋” ๊ฑธ๋ฆฐ๋‹ค.

์ƒ๊ทผ์ด์˜ ํ• ๋จธ๋‹ˆ๋Š” ์ „ํ™” ๋ฒˆํ˜ธ๋ฅผ ๊ฐ ์ˆซ์ž์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋กœ ์™ธ์šด๋‹ค. ์ฆ‰, ์–ด๋–ค ๋‹จ์–ด๋ฅผ ๊ฑธ ๋•Œ, ๊ฐ ์•ŒํŒŒ๋ฒณ์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ๊ฑธ๋ฉด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, UNUCIC๋Š” 868242์™€ ๊ฐ™๋‹ค.

ํ• ๋จธ๋‹ˆ๊ฐ€ ์™ธ์šด ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ด ์ „ํ™”๋ฅผ ๊ฑธ๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ตœ์†Œ ์‹œ๊ฐ„์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 2๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 15๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋‹ค์ด์–ผ์„ ๊ฑธ๊ธฐ ์œ„ํ•ด์„œ ํ•„์š”ํ•œ ์ตœ์†Œ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค.

ํ’€์ด

๋ฒกํ„ฐ์— ๋‹ค์ด์–ผ ์•ŒํŒŒ๋ฒณ์„ ๋„ฃ์–ด๋†“๊ณ  find ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒกํ„ฐ์— ํฌํ•จ๋œ ์•ŒํŒŒ๋ฒณ์˜ ์ธ๋ฑ์Šค + 3์„ ํ•ด์ค€๋‹ค.

์ฒ˜์Œ์—๋Š” ๋ฒกํ„ฐ ์ƒ๊ฐ์„ ๋ชปํ•˜๊ณ  if else๋ฌธ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋‹ค๊ฐ€ ์ •์‹ ์„ ์ฐจ๋ฆฌ๊ณ  ๋ฒกํ„ฐ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

+ npos๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” string::npos๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. string ํ—ค๋”๋ฅผ ํฌํ•จํ•ด๋„ ๊ทธ๋ƒฅ npos๋งŒ ์จ๋„ ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ž๊พธ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๊ทธ๋ƒฅ ์ˆœ์‘ํ–ˆ๋‹ค

 

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

int main() {
    string dial;
    cin >> dial;
    int time=0;
    vector<string> dial_list{"ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"};
    for (int i=0; i<dial.length(); i++){
       for (int j=0; j<dial_list.size(); j++){
           if (dial_list[j].find(dial[i]) != string::npos)
               time += j+3;
       }
    }
    cout << time;
}

 

https://www.acmicpc.net/problem/5622

 

5622๋ฒˆ: ๋‹ค์ด์–ผ

์ฒซ์งธ ์ค„์— ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 2๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 15๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

www.acmicpc.net

 

๋Œ“๊ธ€