본문 바로가기

Python37

두 정수 사이의 합 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12912 a와 b의 크기에 따라 범위를 나누어서 풀면 된다. range범위에 알맞게 적용시킨 후 answer을 return하면 끝..! def solution(a, b): answer = 0 if a 2020. 5. 11.
나누어 떨어지는 숫자 배열 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12910 for문만 잘 돌린다면 간단하게 풀 문제다! def solution(arr, divisor): answer = [] for i in arr: if not i%divisor: answer.append(i) if len(answer)==0: answer.append(-1) answer.sort() return answer 2020. 5. 11.
크레인 인형뽑기 (2019 카카오 겨울 인턴십 기출) 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/64061 문제를 차근차근 잘 읽어서 배열이 인형뽑기 라인에 어떻게 놓이는 지만 안다면 쉽게 풀 수 있는 문제다. 쌓인 두개의 캐릭터가 같을 때 없애줘야하는데 del을 썼다가 range 오류로 헤맸다. 다시 생각해보고 0으로 바꾼 다음, 0은 어차피 공백이니 넘어가는 식으로 바꾸어서 실행이 잘 되었다..! def solution(board, moves): count=0 result=[] for move in moves: for i in range(len(board)): if board[i][move-1]: result.append(board[i][move-1]) board[i][move-1]=0 if.. 2020. 5. 11.
range 사용하기 거의 모든 파이썬 알고리즘 문제풀이 사용되는 range에 대해 알아볼 것이다. +여기서 print(i, end=' ')를 해준것은 print(i)로 하면 한 라인에 하나의 i씩 출력되기 때문에 보기 깔끔하게 하려고 한 것이다..! for i in range(3): print(i, end=' ') #0 1 2 for i in range(0,3): print(i, end=' ') #0 1 2 for i in range(0,3,1): print(i, end=' ') #0 1 2 위의 세 range의 범위는 모두 같다. range(i)이면 범위는 0부터 i-1까지, range(0,i)이면 범위는 0부터 i-1까지, range(0,i,1)이면 범위는 0부터 i-1까지 1씩 커진다. 즉, i만 지정해준다면 defa.. 2020. 5. 6.
두 정수 사이의 합 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12912 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수를 작성해야 한다. a와 b가 같은 경우는 둘 중 아무 수나 리턴하는 조건이 주어져있고, a>b일 수도, a 2020. 5. 5.
나누어 떨어지는 숫자 배열 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12910 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수를 작성해야하고, divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환해야한다. 먼저 for문으로 arr를 돌아가면서 if문을 이용해 divisor로 나누어지면 새로 생성한 answer에 삽입해준다. 그리고 나누어 떨어지는 element가 하나도 없으면 answer의 길이는 0이 되기 때문에 -1를 삽입해준다. 마지막으로 answer을 정렬해서 반환해주도록 한다. def solution(arr, divisor): answer = [] for i i.. 2020. 5. 5.
같은 숫자는 싫어 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12906 예시로 arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return하는 문제를 풀어야 한다. 문제를 제대로 읽지 않는다면 set을 사용해서 풀 수도 있을 것이다. 하지만 여기 return 되는 배열을 보면 1이 두 번이나 있기 때문에 set을 사용하지 않아야 한다. 나는 여기서 새로운 list(->result)를 생성해주고 arr의 제일 첫번째 값을 미리 넣어뒀다. 이후 for문을 돌면서 현재 원소가 result의 마지막 원소와 같지 않을때만 삽입해주도록 해놓았다. def solution(arr): result=[] #새로운 배열 생성 result.appe.. 2020. 5. 5.
가운데 글자 가져오기 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12903 단어 s의 가운데 글자를 반환하는 함수를 작성하는 문제인데, 단어의 길이가 짝수라면 가운데 두글자를 반환해야한다. 그래서 단어의 길이에 따라 if-else문으로 나누어 return되는 범위를 지정해주었다. def solution(s): if len(s)%2: return s[len(s)//2] else: return s[(len(s)//2)-1:(len(s)//2)+1] 2020. 5. 5.
sorted()와 sort()의 차이 python에서 정렬 문제가 자주 나오고 다른 종류의 문제에서도 정렬이 자주 쓰인다. 여기서 sorted()와 sort()가 쓰이는데 이 두 방법의 차이점은 무엇일까? 먼저, 예시로 설명하자면 a=[3,6,1,4,7] b=sorted(a) print(b) #[1, 3, 4, 6, 7] a=[3,6,1,4,7] a.sort() print(a) #[1, 3, 4, 6, 7] 이렇게 된다. 결과는 당연히 같다. sorted()는 원래의 list는 원래대로 놔두고, 한번 더 list를 가져와 정렬한다. sort()는 원래의 list내에서 정렬이 되는 것이라고 생각하면 된다..! 따라서, sorted()는 메모리 사용량을 두배로 늘어난다고 보면 되고, 속도는 sort()가 빠르다. 때때로 원래의 list를 사용해.. 2020. 5. 3.