[백준 Python] 5603번 問題2

iwtkmn_0219·2023년 1월 26일
0

백준 Python

목록 보기
28/32
post-thumbnail

백준 5603 問題2

문제

0 から 9 までの数字だけで構成された文字列が与えられたとき,その文字列 から次の規則に従って新しい文字列を作る操作を考える.与えられた文字列を左端 から1文字ずつ順に読んで行き,同じ数字 a が r 個続いていた場合,個数 r と数字 a を空白で区切らずにこの順で書き出す.与えられた文字列の右端まで読み,最後 の書き出しが終わったところまでを途中何回書き出しがあったとしても全部まとめ て操作1回とカウントする.2回目以降の操作は前回の操作により書き出された文 字列を与えられた文字列として同様の操作を実施する.例えば “122244” という文 字列が与えられた場合には左端から順に1個の1, 3個の2,2個の4なのでこの 操作1回で得られる文字列は “113224” であり,“44444444444” (11 個の4)の場 合には得られる文字列は “114” となる.

100 文字以下の与えられた文字列に上の操作を n 回実施した文字列を出力するプ ログラムを作成せよ.ただし, n ≤ 20 とする.

입력

2 行からなり, 1 行目に操作回数 n, 2 行目に最初の文字列が書かれている.

출력

1 行であ り, 指定された回数の操作を施した文字列の後に改行を入れること.

풀이 및 회고

풀이

0부터 9까지 숫자로만 구성되 문자열이 주어졌을 때 "숫자의 개수" + "숫자" 형식으로 변환하는 구현 문제이다.

회고

파파고가 있었어서 망정이지 없었으면 큰일날 뻔 했다. 구글 번역기는 내 취향이 아니라 ㅎ

코드

def modify(ls: list) -> str:
    result = ""
    prev = ""
    cnt = 0
    for i in range(len(ls) + 1):
        if i == 0:
            prev = ls[i]
            cnt = 1
            continue
        if i == len(ls):
            result += str(cnt)
            result += prev
            return result
        if ls[i] == prev:
            cnt += 1
        else:
            result += str(cnt)
            result += prev
            prev = ls[i]
            cnt = 1


n = int(input())
s = list(input())
for i in range(n - 1):
    s = list(modify(s))
print(modify(s))

>> iwtkmn0219의 Github <<

0개의 댓글