๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Problem Solving/Algorithm, Tips

๋ฐฑ์ค€ ์ธํ’‹ ๋ฐ›๋Š” ๋ฌธ์ œ ์‹œ๋ฆฌ์ฆˆ (c++)

by ํ–‰๋ฑ 2020. 5. 19.

11718. ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๊ธฐ

11719. ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๊ธฐ 2

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

int main()
{
    string s;
    while(getline(cin, s)){
        cout << s << "\n";
    }
}

- 11718์€ ์ธํ’‹์˜ ํ•œ ์ค„ ์•ž๋’ค์— ๊ณต๋ฐฑ์ด ์—†๊ณ , ๋นˆ ์ค„์ด ์—†์Œ, 11719๋Š” ๊ทธ ๋‘ ์ผ€์ด์Šค๋ฅผ ํฌํ•จ

- ๋ชจ๋‘ ์œ„ ํ’€์ด๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ

 

์ฐธ๊ณ  ํ’€์ด ๋งํฌ, getline() ๊ด€๋ จ ๋งํฌ

// std::istream::getline()
istream& getline(char* s, streamsize n);
istream& getline(char* s, streamsize n, char delim);

// std::getline()
istream& getline(istream& is, string& str);
istream& getline(istream& is, string& str, char delim);

- getline() ํ•จ์ˆ˜๋Š” <iostream>์—๋„ ์žˆ๊ณ  <string>์—๋„ ์žˆ์Œ

- <iostream>์— ์ •์˜๋˜์–ด ์žˆ๋Š” getline() ํ•จ์ˆ˜๋Š” char*๋ฅผ ์ธ์ž๋กœ ๋ฐ›์Œ (NULL๋กœ ๋๋‚จ)

- <string>์€ cpp์—์„œ ์“ฐ๋Š” string ๊ฐ์ฒด๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๋Š” ํ—ค๋”์ด๊ณ , getline() ํ•จ์ˆ˜ ์ธ์ž๋„ string ๊ฐ์ฒด์ž„

- <string>๊ณผ <cstring>์€ ๋‹ค๋ฆ„ (<cstring>์€ c์—์„œ ์“ฐ๋Š” char* ๊ด€๋ จ ํ•จ์ˆ˜๋“ค์ด ์กด์žฌ: string.h์™€ ๋น„์Šท)

- delim์€ ์ œํ•œ์ž๋กœ delim์— ๋„๋‹ฌํ•˜๋ฉด ์ถ”์ถœ์ด ์ค‘๋‹จ๋จ (๊ธฐ๋ก๋˜์ง€ ์•Š์ง€๋งŒ ์ŠคํŠธ๋ฆผ์—์„œ ์‚ฌ๋ผ์ง) (๋”ฐ๋กœ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด '\n')

 

cin๊ณผ ํ˜ผ์šฉํ•ด์„œ ์“ธ ๋•Œ๋Š” ์ฃผ์˜:

- cin์€ whitespace๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์ง€๋งŒ, ๊ทธ whitespace๋ฅผ ๋ฒ„ํผ์— ๊ทธ๋Œ€๋กœ ๋‚จ๊ฒจ๋‘ 

- cin์€ whitespace๋ฅผ ๋ฌด์‹œํ•˜๋Š” formatting๋œ ํ•จ์ˆ˜์ด๋ฏ€๋กœ cin๋งŒ ์“ธ ๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Œ

- getline์€ '\n'์„ ์žก๊ณ  ๊ทธ ์ง์ „๊นŒ์ง€๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„๋“ค์ธ ํ›„, '\n'์„ ๋ฒ„ํผ์—์„œ ์ œ๊ฑฐํ•จ

- ๋”ฐ๋ผ์„œ cin ๋‹ค์Œ getline์„ ์‚ฌ์šฉํ•  ๋•Œ cin์ด ๋ฒ„ํผ์— ๋‚จ๊ฒจ๋‘” '\n'์„ getline์ด ์žก์•„ ์›ํ•˜๋Š” ๋Œ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

- ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” cin.ignore()๋กœ ๋ฒ„ํผ๋ฅผ ๋น„์›Œ์ค„ ์ˆ˜ ์žˆ์Œ

 

 


11720. ์ˆซ์ž์˜ ํ•ฉ

// cin๋งŒ ์‚ฌ์šฉํ•œ ๋ฒ„์ „

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

int main()
{
    int N;
    cin >> N;

    string s;
    cin >> s;
	
    int sum = 0;
    for(int i=0; i<N; i++){
        sum += (s[i] - '0');
    }
	
    cout << sum;
}

 

// cin๊ณผ getchar ํ˜ผ์šฉํ•œ ๋ฒ„์ „
#include<iostream>
#include<string>
using namespace std;

int main()
{
    int N;
    cin >> N;
    cin.ignore();
	
    char c;
    int sum = 0;
    for(int i=0; i<N; i++){
        c = getchar();
        sum += (c - '0');
    }
	
    cout << sum;
}

- cin์ด ๋‚จ๊ฒจ๋‘” '\n'์„ getchar()๊ฐ€ ๋ฐ›์ง€ ์•Š๋„๋ก cin.ignore() ํ•ด์ฃผ์—ˆ์Œ

 


 

11721. ์—ด ๊ฐœ์”ฉ ๋Š์–ด ์ถœ๋ ฅํ•˜๊ธฐ

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

int main()
{
    string s;
    cin >> s;
    
    int start = 0, num;
    while(true){
        num = min(10, (int)(s.length() - start));
        if(num <= 0)    break;
        cout << s.substr(start, num) << "\n";
        start += num;
    }
}

 

๋Œ“๊ธ€