jyamethyst21 님의 블로그

백준 15439번 - 베라의 패션 (PYTHON 풀이) 본문

CODING 💻

백준 15439번 - 베라의 패션 (PYTHON 풀이)

jyamethyst21 2025. 9. 17. 12:26

문제:

 

문제는 다음과 같다. 우선 사용자로부터 입력을 받는다. 그리고 그 숫자만큼 세트 상하의가 있을 때, 같은 순서에 있는 상하의는 같은 색상이니 이를 제외한 다른 순서에 있는 것끼리 조합해서 해당 조합이 총 몇 가지인지 구하는 문제이다.

순서 : 12345

# 첫번째 케이스
상의 : 01234
하의 : 56789

<경우의 수>
0: 6789
1: 5789
2: 5689
3: 5679
4: 5678
-----------
# 두번째 케이스
상의: 01
하의: 23

<경우의 수>
0 : 3
1: 2
-----------
# 세번째 케이스
상의: 0123
하의: 4567

<경우의 수>
0: 567
1: 467
2: 457
3: 456

세 가지 케이스를 들고왔다. 예를 들어, 첫 번째 케이스는 입력값으로 5를 받은 상태이다. 이 경우 상의는 0~4, 하의는 5~9라고 가정했을 때 같은 라인에 있는 것들은 같은 색상일 것이다.(예시: (0,5), (1,6) ...) 그러니 같은 라인에 있는 조합은 제외하고 다른 라인에 있는 상하의 세트를 구하면 이는 서로 다른 색상의 조합이 된다.

역시나 규칙을 찾아야 하니 우선 경우의 수를 전부 적어보겠다. 첫 번째 케이스는 보다시피 각 상의에 따라 4가지의 하의 선택이 가능하다. 

마찬가지로 세 번째 케이스 역시 입력값이 4이고, 각 상의에 따라 3가지의 하의 선택이 가능하다. 두 가지의 케이스를 보면 어떤 규칙성이 떠오를 것이다. 바로 'a*(a-1)' 이다. 첫 번째 케이스는 a가 5였는데 여기서 '5*(5-1)'을 하게 되면 20이 출력되고 두 세번째 케이스 역시 해당 식을 적용하면 직접 적은 경우의 수와 일치한다. 이와 같은 규칙을 코드로 적용하면 된다.

 

풀이:

a=int(input())
print(a*(a-1))

코드 설명은 너무 쉬운 관계로 생략하도록 하겠다.

이 문제 역시 규칙을 찾으면 너무나 쉽게 풀 수 있는 문제이다.