목록문제 풀이 (103)
honey_pot
코드 def solution(s): word = '' num = ['zero', 'one', 'two','three','four','five', 'six','seven','eight','nine'] res =[] for i in s: if i.isnumeric(): res.append(int(i)) else: word += str(i) if len(word) > 2 and word in num: su = num.index(word) res.append(int(su)) word='' return int(''.join(str(i) for i in res)) 출력부분에서 계속 null이 나오길래 뭐가 문제인가 했더니 return으로 써야하는데 print로 써서였다 딕셔너리로도 풀 수 있을 것 같은데 zero까..
https://programmers.co.kr/learn/courses/30/lessons/42889 코드 def solution(N, stages): result = {} denominator = len(stages) for stage in range(1, N+1): if denominator != 0: cnt = stages.count(stage) result[stage] = cnt/denominator denominator -= cnt else: result[stage] = 0 return sorted(result, key = lambda x: result[x], reverse=True) 처음엔 len(stages)를 length라는 변수에 저장해서 풀었었는데 풀이방법을 검색해보니 denominat..
def solution(answers): answer = [[1,0],[2,0],[3,0]] pattern = [[1,2,3,4,5],[2, 1, 2, 3, 2, 4, 2, 5],[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]] for i,v in enumerate(answers): if v == pattern[0][i%5]: answer[0][1] +=1 if v == pattern[1][i%8]: answer[1][1] +=1 if v == pattern[2][i%10]: answer[2][1] +=1 result = [] for i in range(3): if max(answer, key=lambda x: x[1])[1] == answer[i][1]: result.append(i+1) ret..
문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. arr 원소를 divisor로 나눠보고 나눠떨어지면 answer에 담아서 sorted answer가 비어있으면 -1를 담는다 def solution(arr, divisor): answer = [] for i in arr: if i%divisor == 0: answer...
zip 과 sorted로 풀어보려다가 테스트 케이스는 통과하는데 다른 예시는 박살이 나서 다른 사람 코드를 참고했다. def solution(strings, n): return sorted(sorted(strings), key=lambda string: string[n]) 이렇게 쉽게 끝나는걸 왜 나는?? 노력은 했으나 망한 코드 def solution(strings, n): keys = [] for i in range(len(strings)): if strings[i][n] ==strings[i+1][n]: keys.append(strings[i][n+1]) keys.append(strings[i+1][n+1]) keys.append(i[n]) pairs = list(zip(keys,strings)) ..
def solution(n): # 소수로 간주 n개 True sieve = [True] * (n+1) # n의 최대 약수 sqrt(n) -> i=sqrt(n)까지 for문 m = int(n **0.5) for i in range(2, m+1): if sieve[i] == True: # i가 소수인 경우 for j in range(i+i,n+1,i): # i이후 i의 배수들 False 판정 sieve[j] = False return len([i for i in range(2, n+1) if sieve[i] == True])
def solution(s): answer = True p = s.count('p') + s.count('P') y = s.count('y') + s.count('Y') if p == y: answer = True else: answer = False return answer count 함수를 사용해서 p,P y,Y의 개수를 구한 뒤 더해서 비교했다.
def solution(s): answer = '' list1 = list(map(ord, s)) list1 = sorted(list1, reverse=True) list2 = list(map(chr, list1)) answer = ''.join(list2) return answer map() 를 이용해서 s 리스트의 값들을 decimal로 바꿔서(ord) 리스트에 저장한다. 내림차순으로 정렬 sorted(reverse=True) 다시 map을 이용해 s리스트의 값들을 ASCII 문자열로 바꿔서(chr) 리스트에 저장한다. join 함수를 이용해 문자열을 합친다.