알고리즘

[프로그래머스] 코딩 기초 트레이닝 (각 문제 별 답) -1

hminor 2024. 6. 18. 12:27

문자열의 앞의 n글자

def solution(my_string, n):
    return my_string[:n]

접미사인지 확인하기

def solution(my_string, is_suffix):
    return 1 if is_suffix in {my_string[i:] for i in range(len(my_string))} else 0

문자열의 뒤의 n글자

def solution(my_string, n):
    return my_string[len(my_string)-n:]

글자 이어 붙여 문자열 만들기

def solution(my_string, index_list):
    return "".join([my_string[i] for i in index_list])

카운트 업

def solution(start_num, end_num):
    return list(range(start_num, end_num+1))

수 조작하기 1

def solution(n, control):
    answer = n
    for i in control:
        if i == "w": answer += 1
        elif i == "s": answer -= 1
        elif i == "d": answer += 10
        else: answer -= 10
    return answer

마지막 두 원소

def solution(num_list):
    return num_list+[num_list[-1]-num_list[-2]] if num_list[-1]>num_list[-2] else num_list+[num_list[-1]*2]

이어 붙인 수

def solution(num_list):
    a,b = 0,0
    for i in num_list:
        if i%2: a = a*10+i
        else: b = b*10+i
    return a + b
def solution(num_list):
    a,b = [],[]
    for i in num_list:
        if i%2: a.append(str(i))
        else: b.append(str(i))
    return int("".join(a)) + int("".join(b))

원소들의 곱과 합

  • 배열 내 모든 원소의 곱을 계산하기 위해선
  • 단순히 반복문을 사용해도 되지만
  • 함수형 프로그래밍 스타일을 위해 간단하게 작성하는 방법으로는
  • functools에 있는 reduce를 불러오고
  • 첫 번째 인자로는 두 수의 곱을 return하는 함수인 operator.mul을 넣고
  • 두 번째 인자로는 배열
  • 세 번째 인자로는 시작 값을 넣어주기
from functools import reduce
import operator

def solution(num_list):
    return 1 if reduce(operator.mul,num_list,1) < sum(num_list)**2 else 0

lag에 따라 다른 값 반환하기

def solution(a, b, flag):
    return a+b if flag else a-b

홀짝에 따라 다른 값 반환하기

def solution(n):
    return sum(list(range(n+1))[1::2]) if n%2 else sum([i**2 for i in list(range(n+1))[::2]])

공배수

def solution(number, n, m):
    return 1 if not number%n and not number%m else 0

n의 배수

def solution(num, n):
    return 1 if not num%n else 0

두 수의 연산값 비교하기

def solution(a, b):
    x = int(str(a)+str(b))
    return x if x>2*a*b else 2*a*b

더 크게 합치기

def solution(a, b):
    return int(str(a)+str(b)) if int(str(a)+str(b))>int(str(b)+str(a)) else int(str(b)+str(a))

문자열 곱하기

def solution(my_string, k):
    return my_string*k

홀짝 구분하기

a = int(input())
print(a,"is even") if not a%2 else print(a,"is odd")

문자열 붙여서 출력하기

str1, str2 = input().strip().split(' ')
print(str1+str2)

주사위 게임 1

def solution(a, b):
    if a%2 and b%2: return a**2+b**2
    elif a%2 or b%2: return 2*(a+b)
    else: return abs(a-b)

꼬리 문자열

def solution(str_list, ex):
    return "".join([i for i in str_list if i.find(ex) == -1])