목록항해99 TIL (43)
우주에서 글을 적어본다

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "H-Index" 문제를 풀었다.- 오늘 주제는 정렬이다.- 그러나 H-Index 문제가 이해가 되지 않았다. 설명을 읽어봐도 응?을 몇 번이나 외쳤는지.[나의 코드]def solution(citations): citations.sort(reverse=True) idx = 0 for i in range(len(citations)): if citations[i] >= i + 1: idx += 1 else: break return idx예제가 하나밖에 없어서 다른 테스트 케이스도 찾아봤다. (프로그래머스에서 친절히 제공하니 더 찾아보시길)[0]배열의 길이가 최소이면서 ..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "카드 뭉치" 문제를 풀었다.- 주제가 정렬이어서 정렬 문제인 줄 알았는데 단순 구현이어서 당황했다.- 문제 접근법을 떠오르는 법은 어렵지 않았다.[나의 코드]def solution(cards1, cards2, goal): answer = 'Yes' for word in goal: # word == cards1[0] and cards1 이렇게 작성하면 index 오류가 난다. # word == cards1[0] 얘를 먼저 검사하기 때문에 오류날 수 있다. # 할 거면 우선 조건을 앞으로 빼오자. if cards1 and word == cards1[0]: cards1.pop(0..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "이중우선순위큐" 문제를 풀었다.- 어제와 마찬가지로 힙(Heap)을 이용해 푸는 문제였다.- 문제 자체는 어렵지 않았는데, 힙 사용할 때 주의해야 할 점을 배울 수 있었다.[나의 코드]import heapqdef solution(operations): answer = [] for operation in operations: if operation.split()[0] == 'I': heapq.heappush(answer, int(operation.split()[1])) else: if answer: if operation.split()[1] == "..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "더 맵게" 문제를 풀었다.- 힙 자료구조를 이용하여 푸는 문제였다.- 기본적으로 파이썬으로 힙 자료구조를 구현할 줄 알아야 한다. 근데 나는 이미 알고 있어서 수고를 덜었다. (어쩔)[나의 코드]import heapqdef solution(scoville, K): answer = 0 q = [] # heapq.heapify(scoville) # 이렇게 쓸 수도 있다. 시험장에선 기억이 안 날지도 모르니... 풀어썼다. for num in scoville: heapq.heappush(q, num) while q[0] 문제를 읽자마자 다음 로직을 짜 보았다.① 힙을 하나 만든다.② 으뜸값과 버금값을..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "기능개발" 문제를 풀었다.- 주제는 스택/큐였지만 먼저 퍼뜩 떠오른 구현이었다.- 그래서 구현으로 먼저 풀고 스택/큐를 활용해서도 풀어봤다.[나의 코드]import mathdef solution(progresses, speeds): answer = [] days = [] for i in range(len(progresses)): left_days = math.ceil((100 - progresses[i]) / speeds[i]) days.append(left_days) # math 라이브러리 안 쓰고 푼 거 """ for i in range(len(progresses)): ..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "하노이의 탑" 문제를 풀었다.- 학부생 때 배웠던 하노이의 탑, 재귀로 풀었던 건 기억이 났지만 그밖의 다른 건 기억이 삭제된 상태였다.^^;;- 이것도 나름의 수학 공식이 존재하기 때문에 대학 교재를 참고했다.[나의 코드]def solution(n): answer = [] def hanoi(n, start, end): if n == 1: answer.append([start, end]) return hanoi(n - 1, start, 6 - start - end) answer.append([start, end]) hanoi(n - 1..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "의상" 문제를 풀었다.- 오늘 주제도 해시이나 수학적인 접근도 필요했다.- 경우의 수를 물어보는 문제니까 어떤 특정 공식이 있을 거라 판단했다.[나의 코드]def solution(clothes): answer = 1 combi = {} for dress in clothes: if dress[1] not in combi: combi[dress[1]] = [] combi[dress[1]].append(dress[0]) for i in combi: answer *= len(combi[i]) + 1 return answer - 1① 딕셔너리 만드는 부분- 처..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "전화번호 목록" 문제를 풀었다.- 문제의 주제는 해시였지만, 가장 먼저 떠오른 풀이는 해시가 아니었다. 하하하...- 하지만 문제의 취지에 맞게 해시로도 풀어보았다.[나의 코드]def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book) - 1): if len(phone_book[i]) 일단 내가 가장 먼저 떠오른 풀이었다.phone_book[i + 1][:len(phone_book[i])] == phone_book[i]이 부분을 코드로 먼저 짜서 답이 나오는지 확인해 보고 나머지 코드를 짜기 시작했다.처음에 왜 코드가 실..

[오늘의 학습 키워드 및 문제]- 프로그래머스에 "JadenCase 문자열 만들기" 문제를 풀었다.- capitalize() 함수를 사용하여 푸는 문제였다.[나의 코드]def solution(s): case = s.split(" ") for i in range(len(case)): case[i] = case[i].capitalize() return ' '.join(case)띄어쓰기를 기준으로 소문자를 대문자로 바꿔야 한다.예를 들어 "3people unFollowed me"를 "3people Unfollowed Me"로 바꿔야 한다.여기서 쓸 수 있는 함수는 여러 가지가 있다. islower(), isupper() 등의 함수도 있지만, 이 함수를 사용할 경우 이..

[오늘의 학습 키워드 및 문제]- 프로그래머스의 "문자열 내 마대로 정렬하기" 문제를 풀었다.- 문제를 읽고 lambda를 이용한 정렬이 바로 떠올랐다. 문제에도 이미 정렬하기라고 명시돼 있기도 하다.[나의 코드]1차 시도def solution(strings, n): return sorted(strings, key=lambda x: x[n])2차 시도def solution(strings, n): answer = [] result = [] for i in range(len(strings)): answer.append((strings[i][n], strings[i])) answer.sort(key=lambda x : (x[0], x[1])) for ..