프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 16960 스위치와 램프 Python

중규리 2024. 2. 7. 12:24

🐸 문제 정보

 

16960번: 스위치와 램프

첫째 줄에 스위치의 수 N, 램프의 수 M이 주어진다. 둘째 줄부터 N개의 줄에는 스위치에 대한 정보가 주어진다. 스위치 정보의 첫 번째 정수는 그 스위치와 연결된 램프의 수이고, 이후 연결된 램

www.acmicpc.net

 

🤖 알고리즘

구현

 

⏱️ 풀이 시간

18.47m

 

📝 풀이

  1. 스위치에 연결된 램프의 번호를 딕셔너리 형태로 변경한다.
    • 램프번호 : 개수
  2. 스위치를 하나씩 순회하면서, 해당 스위치가 꺼져도 모두 켜져있는지 확인한다.

이 문제에 핵심은 2차원 리스트를 {램프번호 : 개수} 형태의 딕셔너리로 변경하는 것이었다.

파이썬의 내장 모듈이 워낙 강력해서... Counter와 리스트 컴프리헨션으로 쉽게 풀 수 있었다.

 

🧑‍💻 나의 답

# pypy3

import sys
from collections import Counter
input = sys.stdin.readline

n, m = list(map(int, input().rstrip().split()))
switch = [list(map(int, input().rstrip().split()))[1:] for _ in range(n)]
lamps = Counter(item for row in switch for item in row)

for s in switch:
    flag = False
    for item in s:
        if lamps[item] - 1 == 0:
            flag = True
            break
    if not flag:
        print(1)
        exit()

print(0)

'PS > 문제풀이' 카테고리의 다른 글

백준 16938 캠프 준비 Python  (1) 2024.02.07
백준 20208 진우의 민트초코우유 Python  (0) 2024.02.07
백준 9935 문자열 폭발 Python  (1) 2024.02.06
백준 15961 회전 초밥 Python  (1) 2024.02.06
백준 1074 Z Python  (1) 2024.02.06