반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 18766번 카드 바꿔치기 파이썬(Python)

1) 문제번호 : 18766번

 

2) 문제 출처

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

 

18766번: 카드 바꿔치기

범고래와 돌고래는 카드놀이를 좋아한다. 각 카드는 빨강 (R), 노랑 (Y), 파랑 (B) 중 하나의 색으로 칠해져 있고 0-9 사이의 숫자가 적혀있다. 색과 숫자가 같은 카드가 여러 장 있을 수도 있다. 최

www.acmicpc.net

 

2. 문제

범고래와 돌고래는 카드놀이를 좋아한다. 각 카드는 빨강 (R), 노랑 (Y), 파랑 (B) 중 하나의 색으로 칠해져 있고 0-9 사이의 숫자가 적혀있다. 색과 숫자가 같은 카드가 여러 장 있을 수도 있다.

최근 범고래는 모든 게임에서 졌고, 돌고래가 몰래 카드를 바꿔치기 한다는 의심을 하게 되었다.

범고래는 기억력이 매우 좋아서 카드놀이를 하기 전 n장의 카드와 카드놀이를 하면서 둘이 플레이 한 n장의 카드를 모두 기억하고 있다. 하지만 돌고래가 카드를 바꿔치기 했는지 아닌지 판단을 하는 능력은 부족하다.

예를 들어, 카드놀이를 하기 전에 n = 5장의 카드가 있었고, 이 카드는 아래와 같았다고 하자.

  • R0
  • B9
  • R5
  • Y3
  • R2

카드놀이를 마치고 난 뒤 범고래가 기억하는 카드는 다음과 같다.

  • R0
  • B8
  • R5
  • Y3
  • R2

이런 경우는 돌고래가 B9 카드 대신 B8 카드로 바꿔치기를 한 것이다.

돌고래가 카드 바꿔치기를 한 증거가 있는지 아닌지 판단하는 프로그램을 만들어보자.

 

 

3. 제약사항

 

4. 입력

첫 줄에 테스트 케이스의 수 T가 주어진다.

각 테스트 케이스는 다음과 같이 세 줄로 이루어져 있다.

첫째 줄에 카드의 개수 n이 주어진다.

둘째 줄에 카드놀이를 하기 전 범고래가 기억하는 n장의 카드를 나타내는 n개의 문자열이 공백으로 구분되어 주어지는데, 각 문자열은 두 글자이며 첫 글자는 R, Y, B 중 하나이고 두 번째 글자는 숫자 0-9중 하나이다.

셋째 줄에는 카드놀이가 끝난 후 범고래가 기억하는 n장의 카드가 주어진다. 입력 형식은 둘째 줄과 같다.

 

 

 

5. 출력

각각의 테스트 케이스마다 한 줄에 하나씩 돌고래가 카드를 바꿔치기 했으면 "CHEATER"를, 아니면 "NOT CHEATER"를 따옴표 없이 출력한다.

 

6. 풀이

- 리스트를 입력 받아, 오름차순으로 정렬 한 후에 비교하여 같으면 NOT CHEATER, 같으면 CHEATER를 출력하면 된다.

 

7. 소스 코드

import sys
input = sys.stdin.readline

T = int(input()) # 테스트 케이스 개수

for _ in range(T) :
    N = int(input()) # 카드 개수
    A1 = list(map(str, input().split()))
    A2 = list(map(str, input().split()))

    A1.sort()
    A2.sort()

    if A1 == A2 : print("NOT CHEATER")
    else : print("CHEATER")

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기