분류 전체보기 (117) 썸네일형 리스트형 프로그래머스 / 코딩 테스트 / 서울에서 김서방 찾기 문제 설명 문제 해결 문자열 리스트에 "Kim"이라는 문자열이 어디에 위치해 있는지 찾아내면 된다. index 함수를 이용하여 위치를 반환하도록 만들었다. def solve(seoul): return "김서방은 " + str(seoul.index('Kim')) + "에 있다" def solution(seoul): answer = solve(seoul) return answer 프로그래머스 / 코딩 테스트 / 문자열 다루기 기본 문제 설명 문제 해결 and, or 연산자를 이용해서 여러 개의 조건을 비교하는 형태의 코드를 작성하면 된다. def solve(s): return (len(s) == 4 or len(s) == 6) and s.isdigit() def solution(s): answer = solve(s) return answer 프로그래머스 / 코딩 테스트 / 문자열 내림차순으로 배치하기 문제 설명 문제 해결 string 자료형도 iterable 객체이다. 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net sorted 함수를 이용하여 정렬할 수 있다. reverse 인자값에 True를 주고 정렬하고 join으로 list 안의 문자들을 문자열로 모아준다. def solve(s): return ''.join(sorted(s,reverse=True)) def solution(s): answer = solve(s) return answer 프로그래머스 / 코딩 테스트 / 문자열 내 p와 y의 개수 문제 설명 문제 해결 lower 함수를 이용하여 문자열에서 대문자를 모두 소문자로 바꿔준다. count 함수를 이용하여 문자열에 특정 문자가 몇 개인지 정보를 얻는다. 정보를 비교하여 결과를 반환한다. def solve(s): return s.lower().count('p') == s.lower().count('y') def solution(s): answer = solve(s) return answer 프로그래머스 / 코딩 테스트 / 문자열 내 마음대로 정렬하기 문제 설명 문제 해결 입출력 예2에서 문자열 리스트를 한 번 정렬해야한다는 힌트를 얻을 수 있다. 나머지는 lambda와 sorted 함수를 응용해서 코드를 작성하면 쉽게 풀 수 있다. 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net def solve(strings, n): return sorted(sorted(strings), key=lambda x : x[n]) def solution(strings, n): answer = solve(strings, n) return answer 프로그래머스 / 코딩 테스트 / 두 정수 사이의 합 문제 설명 문제 해결 comprehension과 ternary operator를 이용하여 코드를 짧게 줄였다. (가독성이 많이 떨어진다.) def solve(start, end): return sum([x for x in range(start, end+1)] if start < end else [x for x in range(end, start+1)]) def solution(a, b): answer = solve(a,b) return answer 다른 사람의 풀이 min, max 내장 함수를 이용하여 코드의 가독성을 끌어올렸다. 위키독스 온라인 책을 제작 공유하는 플랫폼 서비스 wikidocs.net (이쯤 보면 코딩도 예술이다.) def solve(start, end): return sum([x fo.. 프로그래머스 / 코딩 테스트 / 나누어 떨어지는 숫자 배열 문제 설명 문제 해결 리스트의 각 원소를 divisor로 나머지 연산한 값이 0인지 확인하고 원소들을 다시 모아 리스트를 구성하면 된다. comprehension 기법으로 리스트를 재구성해주고 sorted 함수를 이용하여 오름차순으로 정렬해줬다. 재구성한 리스트의 길이가 0일 경우 나누어 떨어지는 원소가 없다는 것이므로 [-1]을 반환한다. def solve(arr, divisor): res = sorted([x for x in arr if x % divisor == 0]) return res if len(res) != 0 else [-1] def solution(arr, divisor): answer = solve(arr,divisor) return answer 프로그래머스 / 코딩 테스트 / 같은 숫자는 싫어 문제 설명 문제 해결 연속적으로 나타나는 원소를 제거한 리스트를 반환해야하는 문제이다. 현재 원소 x와 이전 원소 prev를 지정하여 비교하는 방법으로 문제를 풀었다. prev와 x가 다르면 res에다가 x를 추가하는 방식이다. def solve(arr): prev = arr[0] res = [prev] for x in arr : if prev != x: res.append(x) prev = x return res def solution(arr): answer = solve(arr) return answer 프로그래머스 / 코딩 테스트 / 가운데 글자 가져오기 문제 설명 문제 해결 문자열의 길이가 짝수라면 길이 / 2 해준 후 start를 m - 1 end를 m + 1로 지정하고 문자열을 인덱싱해준다. 문자열의 길이가 홀수라면 길이 / 2 해준 값을 소수점을 버리고 인덱싱에 사용해주면된다. 삼항연산자를 사용하면 코드를 더 짧게 줄일 수 있다. (가독성 면모는 모르겠다..) def solve(s): return s[int(len(s) / 2)-1 : int(len(s) / 2) + 1] if len(s) % 2 == 0 else s[int(len(s) /2)] def solution(s): answer = solve(s) return answer 프로그래머스 / 코딩 테스트 / 3진법 뒤집기 문제 설명 문제 해결 10진수로 표현된 숫자를 어떻게 3진수로 바꿀 수 있을지 생각해야 한다. 일단 10진수, 3진수 대응표를 그려봤다. 어떤 특징이 보일까? 3의 n(자연수)제곱 관련 숫자들이 나타날 때마다 자리수가 바뀌는 양상을 띄고 있다. 일단 문제의 자연수 n이 3보다 낮을 때는 기존의 10진수와 결과가 동일하다. 자연수 n이 3보다 높다면, 실질적인 10진수 -> 3진수 변환 작업을 진행한다. 결과를 담을 문자열 변수를 생성하고 n을 3으로 나눈 몫과 나머지를 구한다. 나머지를 문자로 변환하여 결과 앞에 붙여준다. 작업을 반복하다가 3으로 나눈 몫이 3보다 작다면 변환 작업이 마무리되어야하므로 앞에 n을 붙여주고 마무리한다. def base10_to_base3(n): if n < 3 : retu.. 이전 1 ··· 6 7 8 9 10 11 12 다음