다라다라V
article thumbnail
728x90
반응형

1. 문제요약 (16113. 시그널)

1. 시그널은 "."과 "#"으로 이루어져 있다.
2. 시그널을 해독한 결과에는 반드시 숫자가 1개 이상 있다.
3. 시그널에 등장하는 모든 "#"은 올바른 숫자 패턴에 포함되어 있다.
4. 숫자와 숫자 사이에는 1열 이상의 공백이 있다. 여기서 공백은, 열의 성분이 모두 "."인 열을 의미한다.
5. 0부터 9는 아래와 같이 나타난다. 역시 "#"을 검은색, "."을 흰색으로 표시했다.

여러가지 예제들을 넣어보면서 구현이 맞는지 확인해봐야한다.
스스로 반례를 찾는게 중요하지만 시간이 없거나 정말 모르겠다면 (https://www.acmicpc.net/board/view/64923) 이 링크를 참고하길 바란다.

 

 

16113번: 시그널

zxcvber는 외계인을 연구하는 과학자다. 그는 지난 10년간 우주에서 오는 시그널를 연구했지만, 아무런 성과가 없었다. 그러던 어느 날, 갑자기 우주에서 이상한 시그널이 오기 시작했다. zxcvber는

www.acmicpc.net

 

 

2. 풀이를 위한 부연 설명

  • 코드에서 문제 풀이 시간을 줄이기 위하여 첫 줄에서 구분이 가능하다면 구분하도록 코드를 작성하였다.
  • 코드별로 길이를 설정하여 확인한다.

 

  • 구현에 대한 자세한 개념 설명과 연관 문제는 다음 링크를 참고하면 된다.
 

[코테 알고리즘] 구현 / 관련 문제

본 글은 "나동빈"님의 [이것이 코딩 테스트다]를 참고하여 작성하였으며, 필자가 직접 문제를 풀며 관련된 문제들을 찾아 정리하였습니다. 시리즈 보기 [코테 알고리즘] 파이썬 기본 / 관련 문제

daradarav.tistory.com

 

 

3. 코드 

<python />
import sys input = sys.stdin.readline n = int(input()) string = input().rstrip() len = n // 5 signal = ["" for _ in range(len)] for i in range(n): signal[i % len] += string[i] answer = "" width = [3, 1, 4, 3, 3, 4, 3, 3, 3, 3] idx = 0 while idx < len: crt = signal[idx] if crt == ".....": idx += 1 # 0, 1, 6, 8 elif crt == "#####": if idx == len - 1 or signal[idx + 1] == ".....": answer += "1" idx += width[1] elif signal[idx + 1] == "#...#": answer += "0" idx += width[0] else: new = signal[idx + 2] if new == "#.###": answer += "6" idx += width[6] else: answer += "8" idx += width[8] # 2 elif crt == "#.###": answer += "2" idx += width[2] # 3 elif crt == "#.#.#": answer += "3" idx += width[3] # 4 elif crt == "###..": answer += "4" idx += width[4] # 7 elif crt == "#....": answer += "7" idx += width[7] # 5, 9 else: new = signal[idx + 2] if new == "#.###": answer += "5" idx += width[5] else: answer += "9" idx += width[9] print(answer)

 

 

4. 기억할 점

  • 역시 구현은 반례를 찾는 것이 제일 중요하다.

 

반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!