(백준 10814) 나이순 정렬

2022. 6. 25. 21:45·알고리즘/백준

문제

https://www.acmicpc.net/problem/10814

잘못된 방법

처음에는 그냥 순회를 통해서 두번 정렬을 행하는것으로 했지만,

시간 초과가 나와서 해결방법을 고민하다가 정답을 봣다.

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

bool comapare1(pair<int, string> a, pair<int, string> b)
{
    return a.second > b.second;
}

int main()
{
    int n;
    cin >> n;
    int age;
    string name;
    vector<pair<int, string>> sub;
    for (int a = 0; a < n; a++)
    {
        cin >> age >> name;
        sub.push_back(make_pair(age, name));
    }
    sort(sub.begin(), sub.end());
    for (int a = 1; a < n; a++)
    {
        if (sub[a - 1].first == sub[a].first)
        {
            sort(sub.begin(), sub.end(), comapare1);
        }
    }
    for (int a = 0; a < n; a++)
    {
        cout << sub[a].first << sub[a].second << endl;
    }
}

보니까 for문 안에서 소팅을 해버려서 무조건 타임오버가 날수밖에 없는 구조였음.

 

정답코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>

using namespace std;

bool cmp (pair<int, string> u, pair<int, string> v)
{
return u.first < v.first;
}

int main()
{
int T;
cin >> T;

    vector<pair<int, string>> vec(T);

    for (int i = 0; i < T; i++)
        cin >> vec[i].first >> vec[i].second;

    stable_sort(vec.begin(), vec.end(), cmp);

    for (int i = 0; i < T; i++)
        cout << vec[i].first << " " << vec[i].second << "\n";

}

utility에 존재하는 stable_sort라는것을 사용해서 문제를 해결했고, 이외에도 다양하게 문제를 해결하는 방법이 있었다.

그중에서 내가 항상하는 구조체를 만드는 방법도 존재를해서 살짝 기분이 좋앗다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 > 백준' 카테고리의 다른 글

(백준 1269) 대칭 차집합  (0) 2022.06.29
(백준 14425) 문자열 집합  (0) 2022.06.27
(백준 10815) 숫자 카드  (0) 2022.06.26
백준 1436 영화감독 숀  (0) 2022.06.17
백준7568 덩치(c++)  (0) 2022.06.15
'알고리즘/백준' 카테고리의 다른 글
  • (백준 14425) 문자열 집합
  • (백준 10815) 숫자 카드
  • 백준 1436 영화감독 숀
  • 백준7568 덩치(c++)
진ddang
진ddang
안녕하세요 진땅의 개발자 블로그 입니다. 피드백은 환영입니다. 깃헙 : https://github.com/it794613
    반응형
  • 진ddang
    맛동산이
    진ddang
  • 전체
    오늘
    어제
    • 분류 전체보기 (199)
      • 일기 그리고 목표 (1)
      • 웹 (20)
        • 리액트 (19)
      • 앱 (115)
        • Swift 문법 (15)
        • Swift (65)
        • SwiftUI (32)
        • 리액트 네이티브 (3)
      • CS (30)
        • 컴퓨터그래픽스 (8)
        • 운영체제 (6)
        • 네트워크 (16)
      • 알고리즘 (13)
        • 백준 (12)
        • 프로그래머스 (1)
      • 대외활동 (7)
        • ict한이음(2022.04) (2)
        • 멋쟁이 사자처럼 (5)
        • Apple Developer Academy (0)
      • 다양한 내용들 (8)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    스유
    widget
    백준
    컴퓨터그래픽스
    알고리즘
    dispatchqueue
    멋사
    스위프트
    운영체제
    TCA
    리액트
    Protocol
    spritekit
    swift concurrency
    영남대
    대외활동
    위젯킷
    composable architecture
    c++
    ReactorKit
    웹
    uikit
    멋쟁이사자처럼
    SwiftUI
    widgetkit
    네트워크
    cs
    후기
    Swift
    문법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
진ddang
(백준 10814) 나이순 정렬
상단으로

티스토리툴바