본문 바로가기

Programmers36

문자열 내 마음대로 정렬하기 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12915 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1� programmers.co.kr 처음에 for문을 너무 복잡하게 구현해서 헷갈렸는데 생각을 바꿔보니 정렬해야하는 해당 문자열을 strings[0]자리 앞에 붙인 후 정렬을 하고 다시 없애주면 되는 문제였다. def solution(strings, n): answer=[] result=[] strings.sort() .. 2020. 5. 11.
두 정수 사이의 합 문제 출처 : 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.
두 정수 사이의 합 문제 출처 : 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.
K번째수 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42748 처음엔 result에 append 하는 부분을 잘못 잡아 에러가 났지만 list범위를 다시 생각해보고 추가하니 성공할 수 있었다. for문을 여러번 돌려 시간 초과가 될 수 있으니 다른 방법을 찾아봐야겠다..! def solution(array, commands): answer = [] result=[] for i in commands: answer.append(array[i[0]-1:i[1]]) for i in answer: i.sort() for i in range(len(answer)): result.append(answer[i][commands[i][2]-1]) return resu.. 2020. 5. 3.