• Home
  • About
    • Jiwon Jeong photo

      Jiwon Jeong

      끊임없이 배우며 성장하는 엔지니어

    • Learn More
    • Email
    • Github
  • Posts
    • All Posts
    • All Tags
    • All Categories
  • Projects

(중요)이중반복문 break 조건식 bool 값으로 해결하기

05 May 2021

Reading time ~1 minute

이중반복문 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);
        }
    }
}



PS Share Tweet +1