전체 글 249

[프로그래머스] 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

프로그래머스 모의고사(파이썬)

처음에 비교하는 거는 익숙해서 잘됐는데 처음에 반복되는 배열을 어떤크기로 정의할지, 마지막에 가장 많이 맞춘 애들을 어떻게 정렬해서 리턴할지가 고민이 됐었다. def solution(answers): answer = [] a = [0]*3 #인덱스 i+1번째 수포자가 맞춘개수 num1 = [1,2,3,4,5]*(len(answers)//5+1) num2 = [2,1,2,3,2,4,2,5]*(len(answers)//8+1) num3 = [3,3,1,1,2,2,4,4,5,5]*(len(answers)//10+1) #어짜피 len(answer)만큼 돌릴것이기 때문에 넉넉하게 for i in range(len(answers)): if num1[i]==answers[i]: a[0]+=1 if num2[i]==a..

프로그래머스 소수만들기(파이썬)

앞의 에라토스테네스의 체를 모르면 다른 방법으로 풀어야 한다. 소수 판별하는 다른 프로그래머스 문제에서 에라토스 테네스의 체를 보여드렸으니 이제 이를 활용해 약간의 응용문제를 해결해 보았다. def solution(nums): answer = 0 a=[1]*3001 # 인덱스가 소수면 1 아니면 0. 디폴트 값은 1 a[0]=0 #0은 자연수가 아님 a[1]=0 #1은 소수가 아님 for i in range(2,len(a)-1): if a[i]==0: continue for j in range(2,len(a)//i+1): a[i*j]=0 #에라토스테네스의 체 for i in range(len(nums)-2): for j in range(i+1,len(nums)-1): for k in range(j+1,l..

프로그래머스 크레인 인형뽑기 게임(파이썬)

처음엔 시간 초과가 나왔다. 그래서 위의 이중 for문 내에서 조건을 걸어 모두 처리하려 했고 성공했다. def solution(board, moves): answer = 0 a=[] #바구니 배열 cnt=0 #1개도 꺼내지 않는 경우 for i in moves: for j in range(len(board[i-1])): if board[j][i-1]==0: #꺼내려는 칸이 비어있을 때 if j==len(board[0])-1: cnt+=1 #꺼내려는 마지막 칸이 비어있을 떄 continue #꺼내려는 칸이 비어있을 때 continue else: a.append(board[j][i-1]) #케릭터가 있으면 바구니에 담기 board[j][i-1]=0 #해당 배열 값은 0으로 바꿔줘서 다시 선택이 안되게끔 함..