목록분류 전체보기 (90)
오랑우탄의 반란
오늘도 오랑이는 문제를 풉니다. 콜라 문제풀이 과정뭐이리 길어..하는 문제지만 답변 코드는 굉장히 짧은 문제입니다.괜히 글도 길고 무슨 이미지도 있어서 복잡해보여도, n을 a로 나눈 값의 몫에 b를 곱해서 모두 더하는 간단한 풀이지요.이 과정을 반복해야 하기 때문에, 몫이 0이 되기 전까지 반복되도록 설정한 후, n도 매번 새로운 값으로 갱신되게 해야 합니다. 최종 코드def solution(a, b, n): answer = 0 while n//a != 0: answer += (n//a)*b n = (n//a)*b + n%a return answer 오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~ 프로그래머스코드 중심의 개발자 채용. 스택 ..
오늘도 오랑이는 문제를 풉니다. 푸드 파이트 대회풀이 과정우선 1~len(food)의 숫자 i 에 대해서 food[i] 번 음식이 i 번 반복되도록 하는 패턴을 짜줍니다. food[i]을 둘로 나눈 몫만큼 i 를 문자열로 변환해서 곱해주면 됩니다.str(i)*(food[i]//2) 이후 반복문에 넣어보면 아래와 같이 우리가 원하는 패턴의 반이 리스트 형식으로 출력됩니다. 이때 이걸 뒤집은 형태의 리스트와 합쳐주면 되는데, 중간에 0을 넣고 싶은 것이지요.for i in range(1,len(food)): temp.append(str(i)*(food[i]//2)) temp += temp[::-1] temp.insert(len(temp)//2,'0') 이때 해당 부분이 for 반복..
파이썬 문자열과 숫자열 기초 문법을 살펴봅시다. 1 문자열1-1 문자열 연산문자열은 기본적으로 + (더하기) 기호로 연결(concatination) 해줍니다. 문자열에 숫자를 곱해서 반복시킬 수도 있습니다. a = "Hello"b = "world"print(a + b)# "Helloworld" print(a + " " + b)# "Hello world"print(a*2)# "HelloHello" 1-2 문자열 인덱싱/슬라이싱a = "Hello world"a[0] = "H"a[2:6] = "llo " #인덱스 2~(6-1) 까지a[2:] = "llo world"a[:6] = "Hello "a[:] = "Hello world"a[::-1] = "dlrow olleH" #역순 1-3 문자열 메소드cou..
오늘도 오랑이는 문제를 풉니다. 가장 가까운 같은 글자 풀이 과정문자열 s의 글자 s[i]에 대해 1) 처음 나온 경우와 2) 그 외 두 경우로 나눠서 설계해야 하는 문제입니다. def solution(s): answer = [] for i in range(len(s)): if : #조건 answer.append() #가장 가까운 글자와의 자릿수 차이 else: answer.append(-1) return answer 처음에는 조건을 'for i in s' 라고 생각했지만 그렇게 되면 전체 범위에 대해 조건이 적용되어 모든 글자에 대해 동일한 값을 출력하게 됩니다. 그렇기 때문에 더 구체적인 범위를 설정해줘야 합니다. ..
오늘도 오랑이는 문제를 풉니다. 1045. Customers Who Bought All Products 풀이 과정Customer 테이블에서 customer_id 기준으로 정렬했을 때의 product_key 와 Product 테이블의 product_key 가 일치한 경우 customer_id 를 출력하는 쿼리가 필요합니다. 이때 Product 테이블의 값은 모두 distinct 한 값이란 점을 감안하면, customer_id 기준 각 product_key 의 개수와 Product 테이블 값의 개수가 일치한다는 말로 해석할 수 있습니다. 그러면 이제 쿼리는 완료입니다. 우선 customer_id 기준으로 group 하고 count 에 대한 조건을 having 절 안에 넣어줍니다.이때 Customer ..
오늘도 오랑이는 문제를 풉니다. 문자열 내 마음대로 정렬하기 풀이 과정sort 함수의 특징 활용을 의도한 문제입니다. 기존에는 자동으로 오름차순 정렬이 되는 .sort, sorted() 그리고 내림차순 정렬 조건 reverse = True 만 알고 있었는데 key = 를 사용하면 조건을 자유롭게 줄 수 있다는 사실을 알게 되었습니다. sort 함수answer.sort(key = 조건)sorted(answer, key = 조건) 조건에 함수가 들어갈 경우 key = lambda x: 로 람다함수를 사용해서 넣어주면 됩니다. 생각보다 간단하네요 다중 조건을 주고 싶은 경우 쉼표로 구분하거나 lambda 함수를 사용했을 경우 함수 안에 쉼표 구분으로 넣으면 됩니다. 내림차순으로 정렬할 경우도 마찬가지로 쉼표..
오늘도 오랑이는 문제를 풉니다. 두 개 뽑아서 더하기 풀이 과정리스트의 combination 을 구해서 각각의 값을 더하는 문제입니다. 전에 비슷한 문제가 있었는데 어떤 거였는지 기억이 안 나네요..어쨌든 전과 동일하게 numbers 의 i 와 i+1 인 j 에 대해 각각 추출해서 더하면 됩니다.def solution(numbers): answer = [] for i in range(len(numbers)): for j in range(i+1,len(numbers)): answer.append(numbers[i]+numbers[j]) return sorted(answer) 다만 위와 같이 작성했더니 중복값이 나와서 틀렸습니다.파이썬 중복값 제거를 위해서는 ..
오늘도 오랑이는 문제를 풉니다. K번째수 풀이 과정commands 리스트의 a에 대해서 i, j 를 각각 인덱스로 출력해 num 에 넣어줍니다. 그리고 num 안의 b 에 대해 정렬을 해준 후 k 에 해당하는 값을 answer 에 넣어줍니다.처음에는 append 안에 pop을 썼는데 자꾸 인덱스 범위가 벗어났다는 오류가 떠서 막혔다가 생각해보니 굳이 pop을 안하고 인덱스로 리스트값을 반환하면 되는 거여서 그렇게 작성했습니다. def solution(array, commands): answer = [] num = [] for a in commands: num.append(array[a[0]-1:a[1]]) for b in num: b.sort..