<Ec.crew에서 솔민이가 냈던 개미수열 문제 다시 풀기>



https://codechacha.com/ko/python-convert-string-to-list/
Python - 문자열을 리스트로 변환하는 방법
파이썬에서 String을 List로 변환하는 방법을 소개합니다. 문자열의 문자들을 분리하여 리스트로 변환, split()으로 문자열을 분리하여 리스트로 변환, slicing으로 문자열을 추출하여 리스트로 변환.
codechacha.com
def antant(A): # 리스트 안 같은 숫자들을 리스트로 묶어 주는 함수
A = str(A)
A = A.split(' ')
B = []
prelist = []
if len(A)==1:
B = [A]
else :
for i in range(len(A)-1):
if A[i] ==A[i+1] :
prelist.append(A[i])
else:
B.append(prelist)
prelist=[]
if A[-1] == A[-2]:
B[-1].append(A[-1])
else:
B.append([A[-1]])
return B
def ANTANT(K): # 리스트 받아서 그다음 줄 만들어주는 함수
result = ''
for miniList in (antant(K)):
result += str(miniList[0])
result += str(len(miniList))
return result # 문자열
from sys import stdin
# 첫번째 수와 출력할 줄 수 입력
N, M = map(int,stdin.readline().split())
for _ in range(M): # 결과
N = ANTANT(antant(N)) # N은 문자열
print(N)
엄청 이상하게 돌아감..
can only concatenate str (not "tuple") to str 에러
, 는 파이썬에서 중요한 역할을 하기 때문에 유의해야 함
문자형이 다른 것을 추가할 수 없음!
<백준 1065번 한수>
from sys import stdin
M = int(stdin.readline())
def funcfunc(N,NLen):
benum = N%(10**(NLen))//(10**(NLen-1))
afnum = N%(10**(NLen-1))//(10**(NLen-2))
NLen -= 1
return benum - afnum
realresult = 0
for i in range(1,M+1):
N = i
NLen = len(str(N))
realNlen = NLen
result = 0
if NLen == 1 or NLen == 2:
realresult += 1
else:
while( NLen > 2 ):
if funcfunc(N,NLen) == funcfunc(N,NLen-1):
result += 1
NLen -= 1
if result == realNlen-2:
realresult += 1
print(realresult)
풀었다!! 희열!
오류 엄청 많이 냈다 꼼꼼해야해
특정 자릿수의 숫자 구하기
숫자%(10**(구하려는자릿수보다한단계더큰값))//(10**(구하려는자릿수))
'짜잘IT' 카테고리의 다른 글
22.08.30 백준풀기 (0) | 2022.08.30 |
---|---|
22.08.27 백준풀기 (0) | 2022.08.27 |
22.08.14. 백준풀이 (0) | 2022.08.14 |
22.08.13 백준풀기 (0) | 2022.08.13 |
22.08.12 백준풀기 (0) | 2022.08.12 |