소스 코드
T = int(input())
# 핸드폰 키패드
keyboard = [0,
0,
['a','b','c'],
['d','e','f'],
['g','h','i'],
['j','k','l'],
['m','n','o'],
['p','q','r','s'],
['t','u','v'],
['w','x','y','z']]
for tc in range(1,1+T):
# 키 입력, 단어의 개수
s, n = map(int,input().split())
# 단어
word = list(map(str,input().split()))
# 키 입력에 대응되는 사전 안의 단어 수
cnt = 0
# 키 입력(int) => 리스트 형태
s_lst = list(str(s))
# 키 입력의 길이
s_len = len(s_lst)
for q in range(n):
# 키 입력에 맞는 단어가 몇 개인가
temp = 0
if len(word[q]) == s_len:
for w in range(s_len):
if word[q][w] in keyboard[int(s_lst[w])]:
temp += 1
else:
break
if temp == s_len:
cnt += 1
print('#{} {}'.format(tc,cnt))
해결 방법
1. 키 입력에 사용된 숫자를 순서대로 사전 안의 글자들과 확인하면 됨
ex) 키 입력이 232이고, 사전 안에 abc, adb가 있는 경우
2('a','b','c' 중 하나)와 a > 3('d','e','f')과 b > 2와 c를 비교 => a는 2 안에 포함, b는 3 안에 포함 X, c는 2 안에 포함 => abc는 만들 수 없는 단어
adb의 경우 a는 2 안에, d는 3 안에, b는 2 안에 포함 => adb는 만들 수 있는 단어
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 영준이의 카드 카운팅 - PYTHON #4047 (0) | 2021.06.30 |
---|---|
[SWEA 코딩] 쇠막대기 자르기 - PYTHON #5432 (0) | 2021.06.28 |
[SWEA 코딩] 초보자를 위한 점프대 배치하기 - PYTHON #3503 (0) | 2021.06.25 |
[SWEA 코딩] 정사각형 방 - PYTHON #1861 (0) | 2021.06.22 |
[SWEA 코딩] [SW 모의역량 테스트] 무선 충전 - PYTHON #5644 (0) | 2021.06.21 |