[C/C++] 백준 14725번 - 개미굴

2023. 8. 16. 12:36·Baekjoon

 

14725번: 개미굴

첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N (1 ≤ N ≤ 1000)개가 주어진다. 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 정

www.acmicpc.net

'로봇 개미가 지나온 경로 자체를 문자열로 처리를 한 뒤 중복을 제거하면 되지 않을까' 라는 생각을 했다.

만약 입력 값이 "KIWI-APPLE-BANANA" 라고 한다면, 이 경로를 다음과 같이 처리하는 것이다.

-KIWI

-KIWI-APPLE

-KIWI-APPLE-BANANA

이렇게 입력 받은 경로를 위 처럼 3개의 문자열로 저장하는 것이다.

중복을 제거하기 위해서 문자열을 저장할 때는 set을 사용했다. (정렬까지 해주니 더 좋다.)

 

이런 상황에서 다른 입력 값으로 "KIWI-APPLE-PEACH" 라는 경로가 입력되면

-KIWI

-KIWI-APPLE

-KIWI-APPLE-PEACH

위 3개의 문자열로 처리될 것이다. 

그러면 이미 set에 저장되어 있는 -KIWI, -KIWI-APPLE 2개의 문자열은 중복 제거가 될 것이다.

 

단어 앞에 있는 '-' 는 현재 경로를 오기 위해 지나온 개미굴의 개수를 나타낸다.

#include <iostream>
#include <string>
#include <algorithm>
#include <set>
using namespace std;
#define endl '\n'
#define SIZE 1001

int N;
set<string> s;

void initInput() {
    cin >> N;

    while (N--) {
        int M; cin >> M;
        string str = "";

        while (M--) {
            string input; cin >> input;
            str += "-" + input;
            s.insert(str);
        }
    }
}

void solve() {
    for (auto iter : s){
        int cnt = count(iter.begin(), iter.end(), '-');
        int pos = iter.find_last_of("-");
        string str = iter.substr(pos + 1);
        for (int i = 0; i < cnt - 1; i++) cout << "--";
        cout << str << endl;
    }
}

int main(void) {
    cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false);
    // freopen("input.txt", "r", stdin);
    initInput();
    solve();

    return 0;
}
저작자표시 (새창열림)

'Baekjoon' 카테고리의 다른 글

[C/C++] 백준 3584번 - 가장 가까운 공통 조상  (0) 2023.08.21
[C/C++] 백준 16565번 - N포커  (0) 2023.08.16
[C/C++] 백준 2533번 - 사회망 서비스(SNS)  (0) 2023.08.14
[C/C++] 백준 1759번 - 암호 만들기  (0) 2023.08.07
[C/C++] 백준 11057번 - 오르막 수  (0) 2023.08.04
'Baekjoon' 카테고리의 다른 글
  • [C/C++] 백준 3584번 - 가장 가까운 공통 조상
  • [C/C++] 백준 16565번 - N포커
  • [C/C++] 백준 2533번 - 사회망 서비스(SNS)
  • [C/C++] 백준 1759번 - 암호 만들기
Study with Me!
Study with Me!
Study with Me!
  • Study with Me!
    Seongmo
    Study with Me!
  • 전체
    오늘
    어제
    • Computer (136)
      • Computer Science (61)
        • Data Structure (51)
        • Algorithm (6)
        • 선형대수 with C++ (4)
      • Arm Architecture (1)
        • Register (0)
        • Assembly Instruction (1)
      • Linux (32)
        • Linux Kernel (4)
        • 라이브러리 함수 구현하기 (0)
        • 쉘, 쉘 명령어 구현하기 (15)
        • Ubuntu (13)
      • Cloud Infrastructure (8)
        • Kubernetes (7)
        • OpenStack Magnum (1)
      • AWS (3)
      • Baekjoon (18)
      • Tools (6)
        • Git & Github (5)
        • Vim (1)
      • 개발 환경 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    STL
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Study with Me!
[C/C++] 백준 14725번 - 개미굴
상단으로

티스토리툴바