파이썬 58

[프로그래머스] Lv1. 2016년 (파이썬)

금요일을 0번째 요일로 보고 각 달마다 일 수와 b일까지의 일수를 더해준 다음에 7로 나눈다. def solution(a, b): answer = '' k=["FRI","SAT","SUN",'MON','TUE','WED','THU'] #금요일부터 시작 d=0 # 일 수 for i in range(1,a): if i in [1,3,5,7,8,10]: #31일인 달 d+=31 elif i in[4,6,9,11]: #30일인 달 d+=30 elif i == 2: #29일인 달 d+=29 d+=b-1 #b일에서 1빼줌 answer=k[d%7] #일 수를 7로 나눈 나머지 return answer

[프로그래머스] Lv.1 두 개 뽑아서 더하기 (파이썬)

배열의 길이가 100이하이기 때문에 이중 for문을 써도 절대 시간초과가 안난다. 두 값을 더한 것을 정답배열에 넣고 요리조리 볶아준다. def solution(numbers): answer = [] for i in range(len(numbers)-1): for j in range(i+1,len(numbers)): answer.append(numbers[i]+numbers[j]) #두 숫자를 더한 값 append answer=list(set(answer)) #중복값 제거 answer.sort() #오름차순으로 return answer

[프로그래머스] Lv1. 실패율 (파이썬)

이중 for문을 이용해서 현재 스테이지별 유저의 스테이지를 탐색해줬다. 정렬은 값이 0~1이니 -1로 바꿔가면서 최대값을 찾았다. 처음엔 스테이지에 도달했지만 클리어하지 못한 유저들과 스테이지에 도달한 유저들 모두 이중 for문 안에서 구하니 시간초과가 3개 나왔다... 그래서 len(stages)를 이용, 실패한 유저씩 빼주면 되더라. def solution(N, stages): a= [] b=[] k= len(stages) for i in range(N): c=0 #실패한 유저수 스테이지마다 초기화 for j in range(len(stages)): #계속 변하는 k로 두지않게 주의 if stages[j]==i+1: #스테이지에 도달했지만 클리어하지 못한 유저들 c+=1 if c!=0: a.appen..

파이썬 2차원 배열 초기화시 주의할점

파이썬에서 2차원 배열을 초기화할 때 a=[0]*3 a[1]=1 print(a) # [0,1,0] 다음과 같이 당연해 보이지만 2차원 배열의 경우 a=[[0]*3]*3 a[1][1]=1 print(a) # [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 한 행을 객체로 인식하기 때문에 모든 행을 같은 객체로 바꿔버린다. a=[[0]*3 for _ in range(3)] print(a) # [[0, 0, 0], [0, 0, 0], [0, 0, 0]] a[1][1]=1 print(a) # [[0, 0, 0], [0, 1, 0], [0, 0, 0]] 다음과 같이 초기화해야 원하는 값만 변경할 수 있다. a=[[0]*3]*3 a[1][1]=1 print(a) # [[0, 1, 0], [0, 1, 0..

python 2022.02.11