Skip to content

Instantly share code, notes, and snippets.

View shoark7's full-sized avatar
🎯
Focusing on being better

Sunghwan Park shoark7

🎯
Focusing on being better
View GitHub Profile
@shoark7
shoark7 / best_albums.py
Created October 8, 2019 02:14
프로그래머스 - 해시 - 베스트앨범 문제
class Song:
def __init__(self, number, play):
self.number = number
self.play = play
class Genre:
def __init__(self, name):
self.name = name
self.song_list = [] # (song_index, its_played_count)
@shoark7
shoark7 / fibonacci.py
Created September 30, 2019 01:25
피보나치 수를 구하는 여러 가지 해법
"""피보나치 수를 구하는 함수를 만들어라
함수의 기본적인 골격은 다음과 같을 겁니다.
f(n): {
0 : if n == 0
1 : if n == 1
f(n-1) + f(n-2) : else
}
"""
@shoark7
shoark7 / dict_comprehension.py
Last active September 30, 2019 00:51
easy busy dict maker
from string import ascii_lowercase as LOWERS
# 풀이 1.
ans = {}
for c, n in zip(LOWERS, range(1, len(LOWERS)+1)):
ans[c] = n
print(ans)
@shoark7
shoark7 / all_and_any_in_python.md
Last active September 28, 2019 04:21
we briefly look through all and any builtin functions in Python

0. 목적

이 자료에서는 파이썬의 내장 함수인 allany 함수를 살펴볼 생각입니다. 이 함수는 때로 매우 유용한데 이 함수들을 잘 활용하면 Pythonic 한 코드를 짜기 쉽습니다. 특히 이번 스터디에서 다루시는 문제들 중에 이 두 함수를 쓰면 코드가 짧아지고 간결해지는 경우가 몇 개 있더라구요. 그래서 몇몇 분들께 여쭤봤는데 생각보다 되게 간단한 문법이지만 많이 안 써보신 것 같아요. 이 함수는 zip 과 같은 내장 함수처럼 제대로 알고 적재적소에 쓰면 기가 막히게 유용하기 때문에 간단하게 문서를 만들어보게 되었습니다.



1. 들어가기에 앞서

논의를 편하게 하기 위해 개념을 하나 정의하고 가겠습니다. 잘 아시다시피 파이썬에서 str, list, tuple, dict 등은 for 문에서 원소 하나씩 순회 가능하잖아요? 다시 말해 for문에서 사용할 수 있죠. 파이썬에서 이런 자료형들을 통틀어서 Iterable(이하 "이터러블")이라고 합니다. 이는 실제로 공식적으로 쓰는 용어이고, 사실 내부적으로는 관련된 클래스가 만들어져 있습니다. 반대로 int, float 등은 반복문에서 쓸 수가 없죠. 따라서 이 친구들은 이터러블이 아닙니다. allany는 이터러블한 자료형에 사용할 수 있습니다.

@shoark7
shoark7 / is_prime.py
Created September 16, 2019 13:24
Judge whether given number is a prime number or not
"""입력 받은 숫자가 소수(prime number)인지 판단하라
:입력: int | 판단할 정수. 크기는 1 이상, 10000 이하
:출력: bool | 입력 받은 정수가 소수인지의 여부
:조건:
1. 1은 원칙상 소수가 아닙니다.
"""
# 1. 가장 정의에 충실한 풀이
@shoark7
shoark7 / K번째수 & 체육복 코드.md
Last active September 16, 2019 00:53
스터디 잘하세요! 화이팅..

도움이 될지 모르겠네요. 왼손님 코드는 뭐시냐 그분이 저보다 더 잘 짜시겠죠. 답이 있다고 하니 굳이 넣지는 않겠습니다.

1. K번째 수

def solution(array, commands):
    ans = [] 
    for cmd in commands:
        start, end, k = cmd
 part = sorted(array[start-1:end])
from datetime import datetime
def get_day_of_week(N):
DAYS = '월화수목금토일'
today_index = datetime.weekday(datetime.today())
return DAYS[(today_index + N) % 7]
@shoark7
shoark7 / expanded_parenthesis.py
Last active September 17, 2019 01:51
Let's check if a given parenthesis string is in a valid form.
def is_right_parenthesis(parens):
OPENERS = '([{'
CLOSERS = ')]}'
MAP = dict(zip(CLOSERS, OPENERS)) # { ')': '(', ']': '[', '}': '{' } 와 동일
stack = []
for p in parens:
if p in OPENERS:
stack.append(p)
else:
@shoark7
shoark7 / is_right_parenthesis.py
Last active September 8, 2019 09:13
주어진 괄호식이 올바른 괄호식인지 검증한다.
"""괄호식을 입력받아 이 괄호식이 옳은 형태의 괄호식인지 검증하라
:입력: str | `(`와 `)`로 구성된 문자열. 길이는 0 이상. (ex: `(())()()`)
:출력: bool | 입력 문자열이 올바른 괄호인지 아닌지의 여부. (ex: `True`)
:조건:
1. 입력에는 `()` 이외의 그 어떤 글자도 들어오지 않는다.
"""
def is_right_parenthesis(parens):
OPENER, CLOSER = '()'
@shoark7
shoark7 / caesar_cipher.py
Last active April 21, 2021 02:38
소문자 문자열 카이사르 암호 만들기
"""문자열을 입력받아 카이사르 암호를 만들어라.
:입력: str | 영어 소문자 문자열. 크기는 0 이상. (ex: `word`)
:출력: str | 각 글자를 오른쪽으로 3씩 옮긴 암호. (ex: `zrug`)
:조건:
1. 입력에는 영어 소문자 이외의 글자는 들어오지 않는다. 예를 들어 대문자, 한글, 공백문자 등.
"""
def caesar_cipher(word):
UNICODE_BASE = ord('a')