[TIL] 23.01.21

문종현·2023년 1월 21일
0

TIL

목록 보기
68/119
post-custom-banner

👉 오늘 한 일

  • 프로그래머스 문제풀이(level 0)

프로그래머스 문제풀이

1. 중앙값 구하기

def solution(array):
    return sorted(array)[int(len(array)/2)]

2. 배열의 유사도

def solution(s1, s2):
    cnt = 0
    for t1 in s1:
        for t2 in s2:
            if t1 == t2:
                cnt += 1
    return cnt
  • 다른 사람 풀이
    • set 자료형의 &연산을 활용해서 교집합을 표현.. 파이썬 기초 배울 때 다뤘던건데..!
def solution(s1, s2):
    return len(set(s1)&set(s2));

3. 옷가게 할인 받기

def solution(price):
    if price >= 500000:
        return int(price - price * 0.2)
    elif price >= 300000:
        return int(price - price * 0.1)
    elif price >= 100000:
        return int(price - price * 0.05)
    else:
        return price

4. 순서쌍의 개수

def solution(n):
    cnt = 0
    for i in range(1, n+1):
        if n % i == 0:
            cnt += 1
    return cnt

5. 자릿수 더하기

def solution(n):
    result = 0
    for num in str(n):
        result += int(num)
    return result

6. 제곱수 판별하기

def solution(n):
    if n ** 0.5 == int(n ** 0.5):
        return 1
    else:
        return 2

7. 모음 제거

def solution(my_string):
    vowels = ['a','e','i','o','u']
    for vowel in vowels:
        my_string = my_string.replace(vowel, '')
    return my_string
  • 다른 사람 풀이(re 모듈 사용)
    • a|e|i|o|u 이런 식으로 써도 되지만 하나의 패턴으로 묶어서 사용
import re
def solution(my_string):
	return re.sub('[aeiou]', '', my_string)

8. 개미 군단

def solution(hp):
    result = hp // 5
    if hp % 5 in (1,2):
        result += hp % 5
    elif hp % 5 == 3:
        result += 1
    elif hp % 5 == 4:
        result += 2
    return result
  • 다른 사람 풀이
    • 굳이 if문으로 조건을 따지지 않아도 됨!
def solution(hp):    
    return hp // 5 + (hp % 5 // 3) + ((hp % 5) % 3)

9. n의 배수 고르기

def solution(n, numlist):
    result = []
    for i in numlist:
        if i % n == 0:
            result.append(i)
            
    return result
  • 다른 사람 풀이
    • 리스트 컴프리헨션을 사용할 수도, 필터를 사용할 수도 있다!
def solution(n, numlist):
    return list(filter(lambda v: v%n==0, numlist))

10. 세균 증식

def solution(n, t):
    return n * 2 ** t
  • 다른 사람 풀이(비트시프트 연산)

    • 컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문에, 2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로 지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 1/2로 줄어듦.

    • 왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고, 오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고, 가장 오른쪽에 있는 1비트는 사라짐

    • e.g. 10의 이진수 == 1010

    • 10 >> 1 == 101 == 5

    • 10 << 1 == 10100 == 20

def solution(n, t):
    return n << t # == n * 2 ** t

11. 가위 바위 보

def solution(rsp):
    result = ""
    for c in rsp:
        if c == "2":
            result += "0"
        elif c == "0":
            result += "5"
        elif c == "5":
            result += "2"
    return result
  • 다른 사람 풀이
    • 딕셔너리 활용
def solution(rsp):
    d = {'0':'5','2':'0','5':'2'}
    return ''.join(d[i] for i in rsp)
profile
자라나라 새싹새싹🌱
post-custom-banner

0개의 댓글