-
[백준] 1652번_누울자리를찾아라Study/알고리즘 2020. 1. 21. 23:38
문제 링크 : https://www.acmicpc.net/problem/1652
1652번: 누울 자리를 찾아라
첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.
www.acmicpc.net
난독증인건지...문제를 이해를 못하겠어서 읽고 또 읽었다..
n = int(input()) space = [] for _ in range(n): space.append(list(input())) t_space = list(map(list,zip(*space))) h_count = 0 for s in space: dot = 0 for char in s: if char == ".": dot += 1 else: if dot>=2: h_count+=1 dot=0 else: dot = 0 if dot>=2: h_count+=1 v_count = 0 for t in t_space: dot = 0 for char in t: if char == ".": dot += 1 else: if dot>=2: v_count+=1 dot=0 else: dot = 0 if dot>=2: v_count+=1 print(h_count,v_count)
기본적으로 가로로 누울 자리는 받아온 리스트 그대로 처리를 해줬고, 세로로 누울 자리는 기존 리스트를 transpose 시킨 뒤, 가로로 누울 자리 찾는 방식과 동일하게 처리를 해줬다.
+ 혹시나 하고 input이랑 output을 sys 이용해서 바꿔줬더니 8ms나 줄었다...전에 다른 것에서는 안 줄어들어서 크게 상관없나보다했는데 와우...이젠 고쳐써야겠다
import sys n = int(sys.stdin.readline()) space = [] for _ in range(n): space.append(list(sys.stdin.readline().rstrip())) t_space = list(map(list,zip(*space))) h_count = 0 for s in space: dot = 0 for char in s: if char == ".": dot += 1 else: if dot>=2: h_count+=1 dot=0 else: dot = 0 if dot>=2: h_count+=1 v_count = 0 for t in t_space: dot = 0 for char in t: if char == ".": dot += 1 else: if dot>=2: v_count+=1 dot=0 else: dot = 0 if dot>=2: v_count+=1 sys.stdout.write(str(h_count)+" "+str(v_count))
위에랑 동일한 코드인데 sys.stdin, sys.stdout으로 입력받고 출력해봤다.
'Study > 알고리즘' 카테고리의 다른 글
[백준] 13458번_시험감독 (0) 2020.01.24 [백준] 2668번_숫자고르기 (0) 2020.01.22 [백준] 1759번_암호만들기 (0) 2020.01.17 [백준] 6359번_만취한상범 (0) 2020.01.17 [백준] 2504번_괄호의값 (0) 2020.01.15