코딩테스트/파이썬 알고리즘 문제풀이 입문
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 숫자만 추출
*문제 본문은 강의 내용과 관련되어 있어 자세하게 적지 않았습니다.
문제
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 첫 자리 0은 자연수화 할 때 무시합니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
풀이
• 내 풀이
import sys
input = sys.stdin.readline
N = input().rstrip()
nums = ''
count = 0
for i in range(len(N)):
if N[i].isalpha():
continue
else:
nums += N[i]
print(int(nums))
for i in range(1, int(nums)+1):
if int(nums) % i == 0:
count += 1
print(count)
• 답안 : Python
import sys
input = sys.stdin.readline
N = input().rstrip()
res = 0
cnt = 0
# isdecimal() : 0~9까지의 숫자인지 확인
for x in s:
if x.isdecimal():
res = res * 10 + int(x)
print(res)
for i in range(1, res+1):
if res % i == 0:
cnt += 1
print(cnt)
• 답안 : Kotlin (내가 바꿔본 것 / 정확X)
import java.io.*
import java.util.*
fun main(args: Array<String>) = with(BufferedReader(InputStreamReader(System.`in`))){
var N = readLine()
var res = 0
var cnt = 0
for(i in N) {
if(i.isDigit()) {
// i.toInt() 하면 ASCII값을 반환한다.
var num = Character.getNumericValue(i)
res = res * 10 + num
}
}
println(res)
for(i in 1 until res+1) {
if(res % i == 0) {
cnt += 1
}
}
println(cnt)
}
- 나는 문자열에 접근할 때 인덱스로 접근했다면, 답안에서는 직접적으로 접근해서 하나씩 꺼내서 for문을 돌렸다.
- 그리고 나는 isalpha()로 접근해서 알파벳이라면 continue, 그 외의 경우에 로직을 처리해주었다. 하지만 답안에서는, 쉽게 isdecimal()로 else문 없이 처리할 수 있다는 것을 알게 되었다.
반응형
'코딩테스트 > 파이썬 알고리즘 문제풀이 입문' 카테고리의 다른 글
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 두 리스트 합치기 (0) | 2023.04.27 |
---|---|
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 카드 역배치 (0) | 2023.04.26 |
[파이썬 알고리즘 문제풀이 입문] 탐색&시뮬레이션 - 회문 문자열 검사 (0) | 2023.04.25 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 점수계산 (0) | 2023.04.25 |
[파이썬 알고리즘 문제풀이 입문] 코드 구현력 기르기 - 주사위 게임 (0) | 2023.04.25 |
댓글