728x90
반응형
문제 1. 아스키 코드
#include <iostream>
using namespace std;
int main() {
cin.tie(NULL);
cin.sync_with_stdio(false);
char a;
cin >> a;
cout << int(a) << endl;
return 0;
}
문제 2. 숫자의 합
#include <iostream>
#include <string>
using namespace std;
int main() {
cin.tie(NULL);
cin.sync_with_stdio(false);
int a, sum=0;
string b;
cin >> a >> b;
for (int i = 0; i < a; i++) {
sum += int(b[i]) - int('0');
}
cout << sum << endl;
return 0;
}
문제 3. 알파벳 찾기
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
int alphabets[26], index;
int arr_size = sizeof(alphabets) / sizeof(int);
for (int i = 0; i < arr_size; i++) {
alphabets[i] = -1;
}
cin >> s;
for (int i=0; i < s.size(); i++) {
index = int(s[i]) - int('a');
if (alphabets[index] == -1) {
alphabets[index] += (i + 1);
}
}
for (int i = 0; i < arr_size; i++) {
cout << alphabets[i];
if (i != arr_size - 1) cout << " ";
}
return 0;
}
문제 4. 문자열 반복
#include <iostream>
using namespace std;
int main(){
int a, b;
string str;
cin >> a;
for (int i = 0; i < a; i++) {
cin >> b >> str;
for (int i = 0; i < str.length(); i++) {
for (int j = 0; j < b; j++) {
cout << str[i];
}
}
cout << endl;
}
return 0;
}
문제 5. 단어 공부
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <map>
#include <utility>
using namespace std;
int main() {
string str;
map<char, int> myMap;
map<char, int>::iterator iter;
int int_max = 0;
char ch_result;
int int_cnt = 0;
for (char c = 'a'; c <= 'z'; c++) {
myMap[c] == 0;
}
cin >> str;
for (int i = 0; i < str.length(); i++) {
str[i] = tolower(str[i]);
myMap[str[i]]++;
}
for (iter = myMap.begin(); iter != myMap.end(); iter++) {
if (iter->second > int_max) {
int_max = iter->second;
}
}
for (iter = myMap.begin(); iter != myMap.end(); iter++) {
if (int_max == iter->second) {
int_cnt++;
ch_result = iter->first;
}
}
if (int_cnt == 1) {
printf("%c\n", toupper(ch_result));
}
else {
cout << '?' << endl;
}
return 0;
}
문제 6. 단어의 개수
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
vector<string> func_1152_split(string str, char ch) {
stringstream ss(str);
string tmp;
vector<string> res;
while (getline(ss, tmp, ch)) {
res.push_back(tmp);
}
return res;
}
int main() {
string str;
vector<string> res;
int cnt = 0;
getline(cin, str, '\n');
res = func_1152_split(str, ' ');
for (int i = 0; i < res.size(); i++) {
if (res[i].size() > 0) cnt++;
}
cout << cnt << endl;
return 0;
}
문제 7. 상수
#include<iostream>
#include<string>
using namespace std;
int main(){
string a, b;
string a_r, b_r;
int res;
int cnt=0;
cin >> a >> b;
a_r = a;
b_r = b;
for (int i = 2; i >= 0; i--) {
a_r[cnt] = a[i];
b_r[cnt++] = b[i];
}
if (stoi(a_r) > stoi(b_r)) {
res = stoi(a_r);
}
else {
res = stoi(b_r);
}
cout << res ;
return 0;
}
문제 8. 다이얼
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(){
string str;
cin >> str;
map<char, int> m;
int point, sum=0;
for (int i = 0; i < 26; i++) {
if ('A' + i < 'Z') point = 10;
if ('A' + i < 'W') point = 9;
if ('A' + i < 'T') point = 8;
if ('A' + i < 'P') point = 7;
if ('A' + i < 'M') point = 6;
if ('A' + i < 'J') point = 5;
if ('A' + i < 'G') point = 4;
if ('A' + i < 'D') point = 3;
m['A' + i] = point;
}
for (int i = 0; i < str.length(); i++) {
sum += m[str[i]];
}
cout << sum << endl;
return 0;
}
문제 9. 크로아티아 알파벳
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
vector<string> v_str = { "c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=" };
string str;
cin >> str;
for (int i = 0; i < v_str.size(); i++) {
while (1) {
if (str.find(v_str[i]) == string::npos) {
break;
}
else {
str.replace(str.find(v_str[i]), v_str[i].length(), "!");
}
}
}
cout << str.length() << endl;
return 0;
}
문제 10. 그룹 단어 체커
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
int a;
cin >> a;
string* arr_str = new string[a];
map<char, int> m;
int cnt = 0;
for (int i = 0; i < a; i++) {
cin >> arr_str[i];
}
char pre_ch;
bool is_flag;
for (int i = 0; i < a; i++) {
pre_ch = '0';
is_flag = true;
for (char ch = 'a'; ch <= 'z'; ch++) {
m[ch] = 0;
}
for (int j = 0; j < arr_str[i].length(); j++) {
if (m[arr_str[i][j]] != 0) {
if (pre_ch != arr_str[i][j]) {
is_flag = false;
break;
}
}
m[arr_str[i][j]]++;
pre_ch = arr_str[i][j];
}
if (is_flag) {
cnt++;
}
}
cout << cnt;
return 0;
}
결과
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 단계별로 풀어보기 > 재귀 (c++) (0) | 2022.01.25 |
---|---|
[백준] 단계별로 풀어보기 > 기본 수학 2 (c++) (0) | 2022.01.19 |
[백준] 단계별로 풀어보기 > 기본 수학 1 (c++) (0) | 2022.01.18 |
[백준] 단계별로 풀어보기 > 함수 (c++) (0) | 2022.01.14 |
[백준] 단계별로 풀어보기 > 1차원 배열 (c++) (0) | 2022.01.14 |
[백준] 단계별로 풀어보기 > while문 (c++) (0) | 2022.01.14 |
댓글