이중반복문 break 조건식 bool 값으로 해결하기
- 원래 처음에 짰던 코드와 bool 변수로 어떻게 해결하는지 비교해보자
백준 10809번 - 알파벳 찾기
- ‘a’ 와 ‘z’의 아스키코드 =
97, 122
-
‘A’ 와 ‘Z’의 아스키코드 =
65, 90
- 처음에는 이중반복문 빠져나올 때 마지막 조건값을 else if 문으로 넣어줌으로서 연산을 더 많이 썼음
#include <vector>
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main(){
string s;
cin >> s;
vector<pair<char, int>> vv;
int count = 0;
vv.push_back(make_pair(s[0], count));
for(int i=1; i<s.size(); i++){
char c = s[i];
for(int j=0; j<i; j++){
if(c == s[j]){
count++;
break;
}else if(j == i-1){
vv.push_back(make_pair(c, ++count));
}
}
}
for(int i=97; i<=122; i++){
for(int j=0; j<vv.size(); j++){
if(vv[j].first == char(i)){
printf("%d ", vv[j].second);
break;
}else if(j == vv.size()-1){
printf("%d ", -1);
}
}
}
}
- 이걸
bool 변수를 넣었을 때
어떻게 해결하는지 보자!
#include <vector>
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main(){
string s;
cin >> s;
bool check1 = false;
bool check2 = false;
vector<pair<char, int>> vv;
int count = 0;
vv.push_back(make_pair(s[0], count));
for(int i=1; i<s.size(); i++){
char c = s[i];
check1 = false;
for(int j=0; j<i; j++){
if(c == s[j]){
count++;
check1 = true;
break;
}
}
if(check1 == false){
vv.push_back(make_pair(c, ++count));
}
}
for(int i=97; i<=122; i++){
check2 = false;
for(int j=0; j<vv.size(); j++){
if(vv[j].first == char(i)){
printf("%d ", vv[j].second);
check2 = true;
break;
}
}
if(check2 == false){
printf("%d ", -1);
}
}
}