일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 도커
- Spark
- 리트코드
- 하둡
- HDFS
- Hadoop
- 아파치 스파크
- 데이터 엔지니어링
- 분산처리
- 오블완
- 우선순위큐
- 딕셔너리
- 스파크
- 프로그래머스
- programmers
- 알고리즘
- Python
- 이진탐색
- 분산
- leetcode
- 코딩테스트
- 빅데이터
- Data Engineering
- heapq
- Apache Hadoop
- 아파치 하둡
- Apache Spark
- 티스토리챌린지
- docker
- 파이썬
- Today
- Total
래원
[LeetCode] 1945. Sum of Digits of String After Convert (Python) 본문
[LeetCode] 1945. Sum of Digits of String After Convert (Python)
Laewon Jeong 2024. 12. 14. 18:07
난이도: Easy
문제 설명
You are given a string s consisting of lowercase English letters, and an integer k. Your task is to convert the string into an integer by a special process, and then transform it by summing its digits repeatedly k times. More specifically, perform the following steps:
- Convert s into an integer by replacing each letter with its position in the alphabet (i.e. replace 'a' with 1, 'b' with 2, ..., 'z' with 26).
- Transform the integer by replacing it with the sum of its digits.
- Repeat the transform operation (step 2) k times in total.
For example, if s = "zbax" and k = 2, then the resulting integer would be 8 by the following operations:
- Convert: "zbax" ➝ "(26)(2)(1)(24)" ➝ "262124" ➝ 262124
- Transform #1: 262124 ➝ 2 + 6 + 2 + 1 + 2 + 4 ➝ 17
- Transform #2: 17 ➝ 1 + 7 ➝ 8
Return the resulting integer after performing the operations described above.
문제 예제
Example 1:
Input: s = "iiii", k = 1
Output: 36
Explanation:
The operations are as follows:
- Convert: "iiii" ➝ "(9)(9)(9)(9)" ➝ "9999" ➝ 9999
- Transform #1: 9999 ➝ 9 + 9 + 9 + 9 ➝ 36
Thus the resulting integer is 36.
Example 2:
Input: s = "leetcode", k = 2
Output: 6
Explanation:
The operations are as follows:
- Convert: "leetcode" ➝ "(12)(5)(5)(20)(3)(15)(4)(5)" ➝ "12552031545" ➝ 12552031545
- Transform #1: 12552031545 ➝ 1 + 2 + 5 + 5 + 2 + 0 + 3 + 1 + 5 + 4 + 5 ➝ 33
- Transform #2: 33 ➝ 3 + 3 ➝ 6
Thus the resulting integer is 6.
Example 3:
Input: s = "zbax", k = 2
Output: 8
제한 사항
- 1 <= s.length <= 100
- 1 <= k <= 10
- s consists of lowercase English letters.
✏️ Solution(솔루션)
class Solution:
def getLucky(self, s: str, k: int) -> int:
answer = 0
for alpha in s:
answer += (ord(alpha)-96)//10 + (ord(alpha)-96)%10
k-=1
while k!=0:
temp = list((str(answer)))
answer = 0
for num in temp:
answer += int(num)
k-=1
return answer
일단 s의 알파벳들을 ord함수를 통해 숫자로 바꾸고 //10 연산과 % 10연산을 사용해 첫번째 Transform 결과를 얻었다.
그 후에는 남은 k번 동안 answer를 리스트화 시키고 (ex. 17 => ['1', '7']) 이 리스트의 요소를 int화 시켜 answer에 더해 주었다.
그리고 answer를 return 하여 정답을 맞추었다.