카테고리 없음
[백준/python] N과 M (11)
Potato Lee
2023. 3. 13. 00:02
https://www.acmicpc.net/problem/15665
15665번: N과 M (11)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
[문제]
[코드]
[문제해설]
이 문제는 같은 숫자가 중복해서 나올 수는 있지만, 이미 나왔던 조합은 나올 수가 없게 하는 것이 관건인 문제이다. 처음에는 배열을 하나 만들어서 지금까지 생성된 조합을 모두 넣어 이미 나왔는 지 여부를 검사하는 코드를 짰었으나, 지속적으로 시간초과에 걸렸다.
시간초과를 해결하기 위해서는 이 리스트가 나왔었는 지 확인하는 것이 아닌 set을 이용해 중복을 제거하는 방법을 사용해야 한다. 하지만 이중리스트의 중복을 제거하기 위해서는 튜플로 바꾸어야 한다. 또한, str 자료형으로 안에 요소를을 넣는다면 1111, 222, 333, 4와 같이 있을 때 정수형의 크기 순서대로 나열해 줄 수 없는 상황이 발생한다. 따라서 int형으로 정렬을 해 준 다음 마지막에 str형으로 바꾸어 출력을 하는 방식을 선택했다.