본문 바로가기
개발/문제풀이

[구름레벨] '폴더 폰 자판' 파이썬 풀이

by beomcoder 2023. 6. 13.
728x90
반응형
https://level.goorm.io/exam/159544/%ED%8F%B4%EB%8D%94-%ED%8F%B0-%EC%9E%90%ED%8C%90/quiz/1
 

구름LEVEL

구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입

level.goorm.io

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean

_, push = input(), input()
p, c = push[0], 0
key = {'1':'1.,?!', '2':'2ABC', '3':'3DEF', '4':'4GHI', '5':'5JKL', '6':'6MNO', '7':'7PQRS', '8':'8TUV', '9':'9WXYZ'}
answer = ''
for v in push[1:]:
	if p == v:
		c += 1
	else:
		answer += key[p][c%len(key[p])]
		p, c = v, 0

answer += key[p][c%len(key[p])]

print(answer)

"""
몇번을 손코딩을 해보아도 답이 맞는데 왜 안될까 하고 질문을 남겼더니
데이터가 잘못들어가 있다고 하였다. 괜히 로직을 몇번을 수정했다..

문제에선 문자가 가장 작아야 된다고 하였으므로
같은 숫자를 몇번을 눌러도 반복해서 누른다고 가정하여야 한다.

ex) 11111 -> 1을 한번씩 눌렀다고 가정하고 1을 5번 만들수도 있고, 
1을 5번 눌러 1 한개를 만들수도 있다.

그래서 key의 길이로 잘라서 몇번을 눌러도 키 범위내에 값만 들어가게 하였다.
"""
728x90
반응형

댓글