ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋งŒ๋งŒํ•œ์ค„ ์•Œ์•˜๋Š”๋””.. ๊ทธ๋ƒฅ ๋ณด๊ณ  ์ฝ”์›ƒ์Œ ์ณค๋Š”๋””ใ…ฃ.... ์˜ค๋ž˜๊ฑธ๋ฆฐ๋“ฏ.. ์™œ๋ƒ๋ฉด reverse ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ดํ•ด ๋ถ€์กฑ + getline ์ž˜๋ชจ๋ฆ„ ๋“ฑ์œผ๋กœ ์ธํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ƒ๊ฐ์€ ํ–ˆ์œผ๋‚˜ ๊ตฌํ˜„์„ ๋ชปํ•˜๋Š”.. ์•„๋‹ˆ ํ•ด๋„ ๋Œ์•„๊ฐ€์ง€ ์•Š๋Š” ์ƒํ™ฉ์— ๋งˆ์ฃผํ–ˆ๋˜ ๊ฒƒ..!

 

์ผ๋‹จ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๊ฒƒ์€? ๋ฌธ์žฅ ์ „์ฒด๊ฐ€ ๋’ค์ง‘ํ˜”์ง€๋งŒ.. ๋‹จ์–ด๋Š” ์•ˆ๋’ค์ง‘ํžŒ.. ๊ณ ๋Ÿฐ ๋А๋‚Œ์ด๋‹ˆ๊นŒ

์ผ๋‹จ reverse ํ•จ์ˆ˜๋กœ ์ „์ฒด๋ฅผ ๋’ค์ง‘๊ณ  ํ† ํฐ ๋‹จ์œ„๋กœ ๋’ค์ง‘์œผ๋ฉด ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ

ํ† ํฐ ํ•˜๋‹ˆ๊นŒ ์ž๋ฐ” ์ƒ๊ฐ๋‚˜๋„ค ์ž๋ฐ”๋กœ ํ’€์—ˆ์œผ๋ฉด ๋” ๋นจ๋ฆฌ ํ’€๋ ธ์„๋ผ๋‚˜

 

์–ด์จŒ๋“  ๋ฌธ์žฅ์„ ์ž…๋ ฅ๋ฐ›์•„์•ผ ํ–ˆ๊ธฐ์— ๋‚˜๋Š” cin์œผ๋กœ n์„ ์ž…๋ ฅ๋ฐ›๊ณ  getline์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›์Œ

๊ทผ๋ฐ ์ œ๋Œ€๋กœ ์•ˆ๋Œ์•„๊ฐ.. ๋งŒ์•ฝ ์ € ์˜ˆ์ œ๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค๊ณ  ์น˜๋ฉด footbar๊นŒ์ง€๋Š” ์ž˜ ๋“ค์–ด๊ฐ€๋Š”๋ฐ all your base ๋ฌธ์žฅ์ด ์•ˆ๋“ค์–ด๊ฐ€๋Š”๊ฒƒ..! ์ด ์ด์œ ๋ฅผ ์•Œ์•„๋ณด๋‹ˆ

 

 

(ํ•จ์ˆ˜, C++) ์ž…๋ ฅ ๋ฒ„ํผ ๋น„์šฐ๊ธฐ [cin.ignore()]

char input[100][100] = {0}; cout << "N์„ ์ž…๋ ฅ : "; cin >> N; while (i < N) { cin.getline(input[i], 100); i++; } ์ด๋Ÿฐ์‹์œผ๋กœ N๋ฒˆ์˜ ๋ฌธ์ž์—ด์„ ๋ฐ›๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๊ณ  ์‹คํ–‰ํ•˜์˜€๋Š”๋ฐ N = 3 ์ด๋ผ๋ฉด 3๋ฒˆ์„ ์ž…๋ ฅ๋ฐ›..

isntyet.tistory.com

์ž…๋ ฅ ๋ฒ„ํผ๋ฅผ ์ง€์›Œ์ฃผ์–ด์•ผ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค ๋‚œ ๋ชฐ๋ž๋‹ค

๊ทธ๋Ÿฌ๋‹ˆ๊ฐ€ cin์„ ์ž…๋ ฅํ•ด์„œ ๋ฐ›์€ ์ดํ›„์—” getline()์„ ์“ฐ๋ ค๋ฉด ์ค‘๊ฐ„์— ๊ผญ cin.ignore()์„ ์จ ์ฃผ์–ด์•ผ ํ•œ๋‹ค ์™œ๋ƒํ•˜๋ฉด "\n"์ด ์ž…๋ ฅ ๋ฒ„ํผ์— ๋‚จ์•„์„œ ๊ทธ๋ ‡๋‹ค๋Š” ๊ฒƒ..! ๋‚œ ๋ชฐ๋ž๋‹ค ๊ทธ๋ƒฅ ๋‚ด CLion์ด ์ด์ƒํ•œ ์ค„ ์•Œ์•˜๋‹ค ๋‚ด๊ฐ€ ๋ฐ”๋ณด์˜€๋˜ ๊ฑฐ์˜€๊ตฌ๋‚˜..ใ…Ž

 

๋˜ํ•œ 

else if(j == s.size()){ // ๋ฌธ์žฅ์˜ ๋์ผ ๋•Œ
    reverse(s.begin() + start, s.end()); // start๋ถ€ํ„ฐ end๊นŒ์ง€ ๋’ค์ง‘์Œ
}

๋ฌธ์žฅ์˜ ๋์ผ ๋•Œ ์ด๋ ‡๊ฒŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ s.size() - 1์ด ์•„๋‹Œ s.size()๋กœ ์กฐ๊ฑด๋ฌธ ํ•ด๋†”์„œ ์ด๊ฒŒ ์‹คํ–‰์ด ์•ˆ๋์—ˆ๋‹ค.. ๊ทธ๋ž˜๊ทธ๋ž˜ ์ด์ œ ์•Œ์•˜์œผ๋ฉด ๋์ง€

 

๊ทธ๋ž˜๋„ ์„ฑ๊ณตํ–ˆ๋‹ค๋Š”๊ฑฐ ใ…Žใ…Ž ํžˆํžˆ

// BOJ 12605๋ฒˆ ๋‹จ์–ด์ˆœ์„œ ๋’ค์ง‘๊ธฐ
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n; // ๋ฌธ์žฅ ๊ฐœ์ˆ˜
    cin >> n;
    cin.ignore(); // ์ž…๋ ฅ๋ฒ„ํผ ์ œ๊ฑฐ

    for(int i = 1; i <= n; i++){ // n๋งŒํผ ๋ฐ˜๋ณต
        string s;
        getline(cin, s); // ๋ฌธ์žฅ ์ž…๋ ฅ๋ฐ›์Œ
        reverse(s.begin(), s.end()); // ๋ฌธ์žฅ์„ ๋’ค์ง‘์Œ
        int start = 0;
        for(int j = 0; j < s.size(); j++){
            if(s[j] == ' '){ // ๊ณต๋ฐฑ์ผ ๋•Œ
                reverse(s.begin() + start, s.begin() + j); // start๋ถ€ํ„ฐ j๊นŒ์ง€๋งŒ ๋’ค์ง‘์Œ
                start = j + 1; // start ๊ฐฑ์‹ 
            }
            else if(j == s.size() - 1){ // ๋ฌธ์žฅ์˜ ๋์ผ ๋•Œ
                reverse(s.begin() + start, s.end()); // start๋ถ€ํ„ฐ end๊นŒ์ง€ ๋’ค์ง‘์Œ
            }
        }
        cout << "Case #" << i << ": " << s << endl; // ์ถœ๋ ฅ
    }
    return 0;
}

- ์ผ๋‹จ ๋ฌธ์žฅ์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ์ „์ฒด๋ฅผ ๋’ค์ง‘์€ ์ดํ›„, start ๋ณ€์ˆ˜๋ฅผ 0์œผ๋กœ ์„ค์ •ํ•ด ์ฃผ๊ณ  ๋‹ค์‹œ for๋ฌธ์„ ํ†ตํ•ด ๊ณต๋ฐฑ์ด ๋‚˜์˜ฌ ๋•Œ start ~ j(ํ˜„์žฌ ํƒ์ƒ‰ ๋ถ€๋ถ„) ๊นŒ์ง€๋งŒ reverse ํ•จ์ˆ˜๋กœ ๋ฒ”์œ„ ์ง€์ •ํ•ด ๋’ค์ง‘์–ด์ค€๋‹ค! ๊ทธ๋ฆฌ๊ณ  start ๋ณ€์ˆ˜๋ฅผ j + 1๋กœ ๊ฐฑ์‹ 

- ๋งŒ์•ฝ ๋ฌธ์žฅ์˜ ๋์ผ ๋•Œ๋Š” ๊ณต๋ฐฑ์ด ์—†์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ค€๋‹ค. ์ด๋•Œ๋Š” j๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š” ์—†์ด s.end()๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค

- Case ์ง€์ •ํ•ด ์ถœ๋ ฅ

 

์‹คํ–‰๊ฒฐ๊ณผ

 

Comments