레벨1 문제풀이 - 26문제(카카오 제외)
1. 최대공약수와 최소공배수
https://programmers.co.kr/learn/courses/30/lessons/12940
def solution(n, m): #최대공약수
a,b=n,m
while m: #작은수가 0이 될때까지
if n>m:
n,m=m,n
n,m=n,m%n #작은수, 큰수%작은수
return [n,a*b//n] #최소공배수=두수의 곱/최대공약수
2. 자연수 뒤집어 배열만들기
https://programmers.co.kr/learn/courses/30/lessons/12932
3. 정수 내림차순으로 배치하기
https://programmers.co.kr/learn/courses/30/lessons/12933
4. 로또의 최고 순위와 최저 순위
https://programmers.co.kr/learn/courses/30/lessons/77484
5. 부족한 금액 더하기
https://programmers.co.kr/learn/courses/30/lessons/82612
6. 없는 숫자 더하기
https://programmers.co.kr/learn/courses/30/lessons/86051
7. 자릿수 더하기
https://programmers.co.kr/learn/courses/30/lessons/12931
8. 제일 작은 수 제거하기
https://programmers.co.kr/learn/courses/30/lessons/12935
9. 최소 직사각형
https://programmers.co.kr/learn/courses/30/lessons/86491
10. 3진법 뒤집기
https://programmers.co.kr/learn/courses/30/lessons/68935
11. 나누어 떨어지는 숫자 배열
https://programmers.co.kr/learn/courses/30/lessons/12910
12. 내적
https://programmers.co.kr/learn/courses/30/lessons/70128
13. 모의고사
https://programmers.co.kr/learn/courses/30/lessons/42840
def solution(answers):
stu=[[1,2,3,4,5],[2,1,2,3,2,4,2,5],[3,3,1,1,2,2,4,4,5,5]]
score=[0,0,0]
l=[len(stu[0]),len(stu[1]),len(stu[2])]
for i,answer in enumerate(answers):
for j in range(3):
if answer==stu[j][i%l[j]]: #수가 많은 것 % 수가 적은 것
score[j]+=1
return [i+1 for i,x in enumerate(score) if max(score)==x] #최대값이 여러개일때 그 값을 가진 인덱스를 다 뽑아오는 법!
14. 문자열 내림차순으로 배치하기
https://programmers.co.kr/learn/courses/30/lessons/12917
15. 문자열 다루기 기본
https://programmers.co.kr/learn/courses/30/lessons/12918
16. 서울에서 김서방 찾기
https://programmers.co.kr/learn/courses/30/lessons/12919
17. 소수만들기
https://programmers.co.kr/learn/courses/30/lessons/12977
def solution(nums):
answer=0
nums.sort()
sosus=sosu(sum(nums[-3:]))
for i in range(len(nums)-2):
for j in range(i+1,len(nums)-1):
for k in range(j+1,len(nums)):
if i+j+k in sosus:
answer+=1
return answer
def sosu(val):
arr=set(range(2,val+1))
for i in range(2,val+1):
if i in arr:
arr-=set(range(i*2,val+1,i))
return arr
18. 소수찾기
https://programmers.co.kr/learn/courses/30/lessons/12921
def solution(n):
answer=[0,0]+[1]*n-1 #숫자가 아닌 1로 표현
for i in range(2,n+1):
if answer[i]:
for j in range(i*2,n+1,i):
answer[j]=0
return n+1-answer.count(0)
#set으로 해서 차집합을 하는 방법도 있음
def sosu(val):
arr=set(range(2,val+1))
for i in range(2,val+1):
if i in arr:
arr-set(range(i*2,n+1,i))
return arr
19. 수박수박수박수?
https://programmers.co.kr/learn/courses/30/lessons/12922
20. 시저암호
https://programmers.co.kr/learn/courses/30/lessons/12926
def solution(s, n):
up='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
low='abcdefghijklmnopqrstuvwxyz'
answer='' #1) answer를 리스트로 받아 밑에서 append로 2)s = list(s)로해서 s[i]를 조작가능하게 하기
for ch in s:
if ch==" ":
answer+=' '
elif ch in up:
answer+=up[(up.index(ch)+n)%26]
else:
answer+=low[(low.index(ch)+n)%26]
return answer
21. 완주하지 못한 선수
https://programmers.co.kr/learn/courses/30/lessons/42576
#내풀이
def solution(participant, completion):
participant.sort()
completion.sort()
i=0
while i<len(completion) and participant[i]==completion[i]:
i+=1
return participant[i]
#다른풀이
#리스트+리스트는 할 수 있지만 리스트-리스트는 하지 못한다.
# => counter(리스트)-counter(리스트)를 사용하면 됨, 원소가 0인 key들은 사라짐.
# => 새로운 변수로 결과를 받아야함
from collections import Counter
def solution2(participant, completion):
result =Counter(participant)-Counter(completion)
return result
22. 음양 더하기
https://programmers.co.kr/learn/courses/30/lessons/76501
23. 이상한 문자 만들기
https://programmers.co.kr/learn/courses/30/lessons/12930
#내풀이
def solution(s):
slist=list(s)
idx=0
while idx<len(s):
i=0
while idx<len(s) and slist[idx]!=' ':
slist[idx]=slist[idx].lower() if i%2 else slist[idx].upper()
idx+=1
i+=1
idx+=1
return ''.join(slist)
#다른사람풀이(map과 lambda 같이 사용하기)
def solution2(s):
return " ".join(map(lambda x : "".join([w.lower() if i%2 else w.upper() for i,w in enumerate(x)]),s.split(" ")) )
#map의 첫번째 인자에 함수 이름, 두번째 인자에는 입력들(입력 리스트) : 입력 개수 만큼 함수를 여러번 호출(입력이 lambda의 x가 됨)
#s.split(" ")로써 사이 공백개수-1 만큼 공백을 단어 취급하여 쪼갠다. 즉, 여러개의 공백을 살릴 수 있음
24. 하샤드 수
https://programmers.co.kr/learn/courses/30/lessons/12947
25. 행렬의 덧셈
https://programmers.co.kr/learn/courses/30/lessons/12950
26. k번째 수
https://programmers.co.kr/learn/courses/30/lessons/42748
26. 약수의 합
https://programmers.co.kr/learn/courses/30/lessons/12928