2023. 1. 12. 12:22ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/7596
접근 방법 - 기본적인 정렬 문제
백준의 7596번 문제는 정렬의 기초적인 부분을 다루고 있는 문제이다.
해당 문제는, 입력으로 주어지는 노래 이름들을 정렬하여 이 결과를 그대로 출력해야 하는 문제이다.
정렬 함수의 사용만 용이하게 할 수 있다면, 비교적 쉽게 해결할 수 있는 문제일 것으로 예상된다.
필자의 경우엔 cpp를 사용하기 때문에 sort() 함수를 사용하여 이 문제를 해결할 수 있었다.
이때, 숫자와 문자열이 함께 입력으로 주어지기 때문에 입력 명령문을 쓸 때에 꼭 유의해야 한다.
또한, 테스트 케이스의 숫자도 함께 출력해야 하기 때문에 이것도 함께 유의하며 코드를 작성하면 될 것이다.
혹여나 해당 문제를 해결하는 데에 어려움을 겪고 있다면 아래의 설명과 코드를 참고하길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 테스트 케이스의 숫자를 저장할 변수 num을 0으로 초기화하여 선언해 둔다.
2) 무한 반복문을 사용하여, 아래의 연산들을 수행한다.
- 노래의 개수(list)를 입력받는다.
만일 여기서 0을 입력받았다면, 해당 무한 반복문을 탈출하도록 한다.
(이때, 다음 입력값인 노래 제목들이 원활히 입력되도록 cin.ignore()을 사용하였다.)
- 곡 제목들을 입력받을 배열 st을 선언한 뒤, list의 크기만큼 반복문을 실행하여 곡 제목들을 입력받는다.
- sort() 함수를 이용하여 st의 배열값들을 오름차순으로 정렬한다.
- num에 1을 더하여, 하나의 테스트 케이스가 완료되었음을 의미하도록 한다.
- 현재의 num과 정렬 완료된 st의 배열값들을 순차적으로 출력한다.
3) 2)의 무한 반복문 실행이 완료되었다면, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#include <string>
#include <algorithm>
#define endl '\n'
using namespace std;
//백준 7596번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int num = 0;
while (1) {
int list;
cin >> list;
if (list == 0) { break; }
cin.ignore();
string st[201];
for (int i = 0; i < list; i++) {
getline(cin, st[i]);
}
sort(st, st + list);
num++;
cout << num << endl;
for (int i = 0; i < list; i++) {
cout << st[i] << endl;
}
}
}
제출 결과
(2022.10.13 백준 7596번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 5585번 거스름돈 (C++/cpp) (0) | 2023.01.13 |
---|---|
[백준 BOJ] 26489번 Gum Gum for Jay Jay (C++/cpp) (0) | 2023.01.13 |
[백준 BOJ] 14652번 나는 행복합니다~ (C++/cpp) (0) | 2023.01.12 |
[백준 BOJ] 1620번 나는야 포켓몬 마스터 이다솜 (C++/cpp) (0) | 2023.01.11 |
[백준 BOJ] 10103번 주사위 게임 (C++/cpp) (0) | 2023.01.02 |