[소수 찾기]
My answer- 틀린코드
def solution(n):
answer=0
tmp=[0]*20001
for i in range(2,n+1):
tmp[i]=i
for i in range(2,n+1):
if tmp[i]==0:
continue
else:
for j in range(i+i,n+1,i):
tmp[j]=0
for i in range(n+1):
if(tmp[i]!=0):
answer+=1
return answer
Another answer
def solution(n):
answer=0
tmp=[1]*(n+1)
m=int(n**0.5)
# 제곱근까지만 봐도 약수의 개수는 변함없음 -> 전체 n+1까지 할 시 효율성이 떨어지게 된다.
for i in range(2,m+1):
# 처음엔 전부 1이 들어가있고, 2부터 자기자신을 제외한 그 수의 배수들을 0으로 바꿈
if tmp[i]==1:
for j in range(i*i,n+1,i):
tmp[j]=0
for i in range(2,n+1):
if(tmp[i]==1):
answer+=1
return answer
더보기
소수의 개수를 에라토스테네스의 체를 이용하여 구했는데, 우선 모든 배열에 1을 넣어놓은 뒤에 2부터 시작해서 범위내 2를 제외한 2의배수들을 없애고, 다음 3을 제외한 3의배수들을 없애고 이런식으로 반복하여 남은숫자들이 약수가 되는 방법이다. 이따 범위는 끝까지 할 필요가 없고, 그 수의 제곱근까지만 봐도 충분하다.
"에라토스테네스의 체"
https://namu.wiki/w/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98%20%EC%B2%B4
[서울에서 김서방 찾기]
My answer
def solution(seoul):
answer = ''
answer="김서방은 "+str(seoul.index("Kim"))+"에 있다"
# answer="김서방은 %d에 있다" %seoul.index("Kim")
return answer
[문자열 다루기]
My answer
def solution(s):
answer = True
answer=s.isdigit()
if(len(s)!=4 and len(s)!=6):
answer=False
return answer
Another answer
def solution(s):
return s.isdigit() and len(s) in (4, 6)
# 4 또는 6글자 판단을 if,else말고 in을 사용
# 정확한 숫자를 파악하고자 할 때는 isdemical()이 좋다. isdigit은 제곱같은 특수문자도 숫자로 인식
더보기
아래 코드는 in을 사용하여 글자길이를 판단했고, isdigit()을 사용하였는데 실질적으로 isdigit()은 숫자로 보이는 모든 예를들어 제곱같은 특수문자도 숫자로 인식하기 때문에 isdemical()을 사용하여 판단하는게 더 정확하다.
[문자열 내림차순]
My answer
def solution(s):
answer=''
tmp=list(s)
tmp.sort(reverse=True)
for i in tmp:
answer+=i
return answer
Another answer
def solution(s):
return ''.join(sorted(s, reverse=True))
더보기
sort()와 sorted()의 차이점은 반환값의 유무이다. sort는 그냥 그 배열자체를 정렬해버리고 sorted는 반환값이 있다.
[문자열 내 p와 y의 개수]
My answer
def solution(s):
answer = True
s=s.lower()
if(s.count('p')!=s.count('y')):
answer=False
if(s.count('p')==0 and s.count('y')==0):
answer=True
return answer
Another answer
def solution(s):
return s.lower().count('p') == s.lower().count('y')
[문자열 내 마음대로 정렬하기]
My answer
def solution(strings, n):
s=list(strings)
tmp=[0]*(len(s))
tmp2=[0]*(len(s))
# n번째 자리에 있는 글자를 맨앞으로 보내고 나머지를 뒤로 밀음
for i in range(len(s)):
tmp[i]=""
tmp[i]=s[i][n]+s[i][:n]+s[i][n+1:]
# 이 상태에서 정렬하면 n번째 자리 알파벳을 기준으로 정렬하게 됨
tmp.sort()
# 원래 n번째 자리있는 알파벳을 원래대로 돌려넣음
for i in range(len(s)):
tmp2[i]=""
tmp2[i]=tmp[i][1:n+1]+tmp[i][0]+tmp[i][n+1:]
return tmp2
Another answer
def solution(strings, n):
strings = [i[n]+i for i in strings]
strings.sort()
return [i[1:] for i in strings]]
728x90
반응형
'코딩테스트 > 프로그래머스[Python]' 카테고리의 다른 글
[프로그래머스] 09/13 (3) (0) | 2021.09.13 |
---|---|
[프로그래머스] 09/09 (3) (0) | 2021.09.09 |
[프로그래머스] 09/06 (2) (0) | 2021.09.06 |
[프로그래머스] 09/05 (12) (0) | 2021.09.05 |
[프로그래머스] 09/03 (3) (0) | 2021.09.03 |