본문 바로가기

전체 글267

[파이썬을 파이썬답게] i번째 원소와 i+1번째 원소 my dirty code def solution(mylist): answer = [] for i in range(len(mylist)-1): answer.append(abs(mylist[i] - mylist[i+1])) return answer Using zip def solution(mylist): answer = [] for number1, number2 in zip(mylist, mylist[1:]): answer.append(abs(number1 - number2)) return answer ※ 주의 zip 함수에 서로 길이가 다른 리스트가 인자로 들어오는 경우에는 길이가 짧은 쪽 까지만 이터레이션이 이루어집니다. 더 자세한 내용은 공식 레퍼런스 - zip의 내용을 참고해주세요. Returns a.. 2021. 3. 8.
[파이썬을 파이썬답게] 2차원 리스트 뒤집기 def solution(mylist): answer = [list(x) for x in zip(*mylist)] return answer for x 2 mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] new_list = [[], [], []] for i in range(len(mylist)): for j in range(len(mylist[i])): new_list[i].append(mylist[j][i]) pythonic mylist = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] new_list = list(map(list, zip(*mylist))) ZIP zip으로 dict의 key, value를 넣어줄 수 도 있다. wikidocs.net/32#zip.. 2021. 3. 8.
[파이썬을 파이썬답게] 알파벳 출력하기 내풀이 num = int(input().strip()) if num == 0: for i in range(ord('a'), ord('z')+1): print(chr(i),end='') else: for i in range(ord('A'), ord('Z')+1): print(chr(i),end='') pythonic import string string.ascii_lowercase # 소문자 abcdefghijklmnopqrstuvwxyz string.ascii_uppercase # 대문자 ABCDEFGHIJKLMNOPQRSTUVWXYZ string.ascii_letters # 대소문자 모두 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ string.digi.. 2021. 3. 8.
[파이썬을 파이썬답게] 문자열 정렬하기 ### 우측 정렬 예 s = '가나다라' n = 7 answer = '' for i in range(n-len(s)): # 문자열의 앞을 빈 문자열로 채우는 for 문 answer += ' ' answer += s s = '가나다라' n = 7 s.ljust(n) # 좌측 정렬 s.center(n) # 가운데 정렬 s.rjust(n) # 우측 정렬 2021. 3. 8.
[파이썬을 파이썬답게] n진법으로 표기된 string을 10진법 숫자로 변환하기 num = '3212' base = 5 answer = 0 for idx, number in enumerate(num[::-1]): answer += int(number) * (base ** idx) num = '3212' base = 5 answer = int(num, base) 2021. 3. 8.
[프로그래머스] 조이스틱 다른 사람의 풀이 def solution(name): change = [min(ord(i) - ord("A"), ord("Z")-ord(i)+1) for i in name] print(change) idx = 0 answer = 0 while True: answer += change[idx] change[idx] = 0 if sum(change) == 0: return answer # until sum of change = 0 left, right = 1, 1 while change[idx - left] == 0: left += 1 while change[idx + right] == 0: right += 1 answer += left if left < right else right idx += -left.. 2021. 3. 5.
[프로그래머스] 큰 수 만들기 다른 사람의 풀이 def solution(number, k): # stack에 입력값을 순서대로 삽입 stack = [number[0]] for num in number[1:]: # 들어오는 값이 stack 값보다 크면, 기존의 값을 제거하고 새로운 값으로 바꿈 # 참고 : len(stack) > 0 == stack while len(stack) > 0 and stack[-1] 0: # 값을 한개 빼서 k는 1이 제거 k -= 1 # 내부의 값을 제거 stack.pop() # 새로운 값을 삽입 stack.append(num) # 만일 충분히 제거하지 못했으면 남은 부분은 단순하게 삭제 # 이렇게 해도 되는 이유는 이미 큰 수부터 앞에서 채워넣었기 때문 if k != 0: stac.. 2021. 3. 4.
[프로그래머스] 삼각 달팽이 import itertools # 달팽이가 움직인 좌표 def get_next(x, y, d): DELTAS = {'up': (-1, -1), 'down': (1, 0), 'right': (0, 1)} dx, dy = DELTAS[d][0], DELTAS[d][1] nx, ny = x + dx, y + dy return nx, ny # 달팽이가 범위 안에 있는지 밖에 있는지 확인 def check_turn(nx, ny, n, snail): return nx = n or ny > nx or snail[nx][ny] != 0 def solution(n): NEXT = {"up" : "down", "down" : "right", "right" : "up"} snail = [[0] * i f.. 2021. 3. 4.
[프로그래머스] 문자열 압축 파이썬 다른 사람의 풀이 def solution(s): length = [] result = "" if len(s) == 1: return 1 for cut in range(1, len(s) // 2 + 1): count = 1 tempStr = s[:cut] for i in range(cut, len(s), cut): if s[i:i+cut] == tempStr: count += 1 else: if count == 1: count = "" result += str(count) + tempStr tempStr = s[i:i+cut] count = 1 if count == 1: count = "" result += str(count) + tempStr length.append(len(result)) result .. 2021. 3. 3.