전화번호 목록

문제 링크: https://www.acmicpc.net/problem/5052

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

 

sort로 string을 정렬하면 사전순으로 정렬된다.
이를 이용하여 정렬 후 현재 데이터가 다음의 데이터 부분에 속하게 되면, 일관성이 유지되지 않았다는 것을 의미한다.

 

  • 정답 코드
      #include<iostream>
      #include<algorithm>
      #include<vector>
      using namespace std;
      bool compare(string a, string b) {
          return a.size() < b.size();
      }
      int main() {
          ios_base::sync_with_stdio(false);
          cin.tie(NULL); cout.tie(NULL);
          int t;
          cin >> t;
          while (t--) {
              bool flag = true;
              int n;
              cin >> n;
              vector<string> list(n);
              for(int i = 0;i<n;i++) {
                  cin >> list[i];
              }
              //사전순 정렬
              sort(list.begin(), list.end());
              for (int i = 0; (i < list.size() - 1) && flag; i++) {
                  if(compare(list[i], list[i+1]))
                      if (equal(list[i].begin(), list[i].end(), list[i+1].begin())) {
                          flag = false;
                          break;
                      }
              }
              if (flag)
                  cout << "YES\n";
              else
                  cout << "NO\n";
          }
          return 0;
      }

'ProblemSolving' 카테고리의 다른 글

1389_케빈 베이컨의 6단계 법칙  (0) 2021.02.16
[BOJ] 1456_거의 소수  (0) 2021.02.11
[BOJ] 1269_대칭 차집합  (0) 2021.02.08
[BOJ] 1276_교각 놓기  (0) 2021.02.07
[BOJ] 10546_배부른 마라토너  (0) 2021.02.06
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기