취업 및 이직 준비/코딩테스트 준비

프로그래머스 코딩 기초 트레이닝 Python Day1 ~ Day5

code2772 2025. 1. 31. 14:36
728x90
반응형

 

DAY 1


문자열 출력

str = input()
print(str)

 

a, b 출력

a, b = map(int, input().strip().split(' '))
print("a =", a)
print("b =", b)
  1. a, b = map(int, input().strip().split(' '))
    • input(): 사용자로부터 문자열을 입력받습니다
    • .strip(): 입력된 문자열의 앞뒤 공백을 제거합니다
    • .split(' '): 문자열을 공백을 기준으로 나누어 리스트로 만듭니다
    • map(int, ...): 리스트의 각 문자열을 정수로 변환합니다
    • a, b = ...: 변환된 두 정수를 변수 a와 b에 각각 할당합니다

예시: 입력이 "4 5"인 경우

  • "4 5" (입력) → "4 5" (strip) → ["4", "5"] (split) → [4, 5] (map) → a=4, b=5 (할당)
  1. print("a =", a)
    • "a ="라는 문자열과 변수 a의 값을 출력합니다
    • 콤마로 구분된 값들 사이에 자동으로 공백이 추가됩니다
  2. print("b =", b)
    • "b ="라는 문자열과 변수 b의 값을 출력합니다
    • 마찬가지로 콤마로 구분된 값들 사이에 자동으로 공백이 추가됩니다

 

반복문

str, n = input().strip().split(' ')
n = int(n)
for i in range(n):
print(str, end="")

 

대소문자 바꿔서 출력

이를 해결하기 위한 코드를 작성하겠습니다. Python의 문자열 메서드인 swapcase()를 사용하면 한 번에 대소문자를 바꿀 수 있습니다.

str = input()
print(str.swapcase())

 

또는 각 문자를 직접 확인하여 변환하는 방법도 있습니다:

str = input()
result = ''
for char in str:
    if char.isupper():
        result += char.lower()
    else:
        result += char.upper()
print(result)

 

특수문자 출력

print('!@#$%^&*(\\\\\\'\\"<>?:;')

print(r'!@#$%^&*(\\'"<>?:;') // 앞에 r 붙이기

출력예시 : !@#$%^&*(\\'"<>?:;

 


DAY2

 

덧셈

a, b = map(int, input().strip().split(' '))
print(f'{a} + {b} = {a + b}')

  1. 직접 'a + b = '라는 텍스트를 출력하는 대신 실제 값을 포함한 형식으로 변경
  2. f-string을 사용하여 변수 값을 문자열에 삽입
  3. 불필요한 공백 제거

 

문자열 연결

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

코드 설명:

  1. input().strip().split(' '): 입력받은 문자열의 앞뒤 공백을 제거하고 공백을 기준으로 나눔
  2. str1, str2 = ...: 나눈 문자열을 각각 str1과 str2에 할당
  3. str1 + str2: 두 문자열을 연결(concatenate)
  4. print(): 연결된 문자열을 출력

 

문자열 돌리기

1번 방법: for 문 사용

str = input()
for char in str:
    print(char)

 

2번 방법: 줄바꿈 문자(\n) 삽입

str = input()
print('\\n'.join(str))

 

홀짝구분하기

n = int(input())
if n % 2 == 0:
    print(f"{n} is even")
else:
    print(f"{n} is odd")

코드 설명:

  1. int(input()): 입력받은 문자열을 정수로 변환
  2. n % 2 == 0: n을 2로 나눈 나머지가 0인지 확인(짝수 판별)
  3. f-string을 사용하여 결과 출력
    • 짝수인 경우: "{n} is even" 출력
    • 홀수인 경우: "{n} is odd" 출력

 

문자열 겹쳐쓰기

def solution(my_string, overwrite_string, s):
# s 이전 부분 + overwrite_string + 나머지 부분
    return my_string[:s] + overwrite_string + my_string[s + len(overwrite_string):]

코드 설명:

  1. my_string[:s]: 원본 문자열의 시작부터 인덱스 s 전까지의 부분
  2. overwrite_string: 교체할 문자열
  3. my_string[s + len(overwrite_string):]: overwrite_string이 끝난 이후부터 끝까지의 부분

예시:

  1. my_string = "He11oWor1d", overwrite_string = "lloWorl", s = 2 인 경우:
    • my_string[:s] = "He"
    • overwrite_string = "lloWorl"
    • my_string[s + len(overwrite_string):] = "d" → 9 번 다음이 d
    • 결과: "He" + "lloWorl" + "d" = "HelloWorld"
  2. my_string = "Program29b8UYP", overwrite_string = "merS123", s = 7 인 경우:
    • my_string[:s] = "Program"
    • overwrite_string = "merS123"
    • my_string[s + len(overwrite_string):] = "" → 14다음 아무것도 없음
    • 결과: "Program" + "merS123" + "" = "ProgrammerS123"

 


DAY3

 

문자열 섞기

def solution(str1, str2):
    answer = ''
    for i in range(len(str1)):
        answer += str1[i] + str2[i]
    return answer

설명:

  1. 빈 문자열 answer를 생성하여 결과를 저장할 준비를 합니다.
  2. str1과 str2의 길이가 같으므로, str1의 길이만큼 반복합니다.
  3. 각 반복에서:
    • str1의 i번째 문자와 str2의 i번째 문자를 answer에 순서대로 추가합니다.
  4. 완성된 answer를 반환합니다.

 

문자 리스트를 문자열로 변환하기

def solution(arr):
    return ''.join(arr)

def solution(arr):
    answer = ''
    for char in arr:
        answer += char
    return answer

설명:

  1. join() 메서드를 사용하여 arr 배열의 모든 요소를 빈 문자열('')로 연결합니다.
  2. 각 요소가 순서대로 연결되어 하나의 문자열이 만들어집니다.

 

문자열 곱하기

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

def solution(my_string, k):
    return ''.join([my_string for _ in range(k)])

설명:

  1. 파이썬에서는 문자열과 정수의 곱셈을 통해 문자열을 반복할 수 있습니다.
  2. my_string * k는 my_string을 k번 반복한 새로운 문자열을 생성합니다.

 

더 크게 합치기

Copy
def solution(a, b):
# 두 수를 이어 붙인 값들을 계산
    ab = int(str(a) + str(b))
    ba = int(str(b) + str(a))

# 더 큰 값을 반환 (같을 경우 ab 반환)
    return max(ab, ba)

설명:

  1. 정수를 문자열로 변환:
    • str(a)와 str(b)로 각 정수를 문자열로 변환합니다.
  2. 문자열 연결:
    • str(a) + str(b)로 첫 번째 케이스를 만듭니다.
    • str(b) + str(a)로 두 번째 케이스를 만듭니다.
  3. 문자열을 다시 정수로 변환:
    • int()를 사용하여 연결된 문자열을 정수로 변환합니다.
  4. 두 값을 비교:
    • max()를 사용하여 두 값 중 더 큰 값을 반환합니다.
    • 같은 경우 ab가 반환됩니다.

 

두 수의 연산값 비교하기

def solution(a, b):
# 두 수를 이어 붙인 값 계산
    ab = int(str(a) + str(b))

# 2 * a * b 계산
    mul = 2 * a * b

# 두 값 중 더 큰 값 반환 (같을 경우 ab 반환)
    return max(ab, mul)

설명:

  1. 첫 번째 값(ab) 계산:
    • str(a) + str(b)로 두 정수를 문자열로 변환하여 연결
    • int()로 다시 정수로 변환
  2. 두 번째 값(mul) 계산:
    • 2 * a * b 계산
  3. 두 값을 비교:
    • max()를 사용하여 더 큰 값을 반환
    • 같은 경우 ab가 반환됨

 


DAY4

 

N의 배수

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

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

설명:

  1. num을 n으로 나눈 나머지가 0이면 num은 n의 배수입니다.
  2. 조건부 표현식(삼항 연산자)을 사용하여:
    • num % n == 0이면 1을 반환
    • 그렇지 않으면 0을 반환

 

공배수

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

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

설명:

  1. number가 n과 m의 공배수인지 확인하기 위해:
    • number를 n으로 나눈 나머지가 0인지 확인 (number % n == 0)
    • number를 m으로 나눈 나머지가 0인지 확인 (number % m == 0)
  2. 두 조건이 모두 참이면 1을 반환, 하나라도 거짓이면 0을 반환

 

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

def solution(n):
    if n % 2 == 1:# n이 홀수인 경우
        return sum(i for i in range(1, n + 1, 2))
    else:# n이 짝수인 경우
        return sum(i * i for i in range(2, n + 1, 2))
        
        
        
 def solution(n):
    result = 0
    if n % 2 == 1:  # 홀수인 경우
        for i in range(1, n + 1, 2):
            result += i
    else:  # 짝수인 경우
        for i in range(2, n + 1, 2):
            result += i * i
    return result

설명:

  1. n이 홀수인지 짝수인지 판별:
    • n % 2 == 1로 홀수 판별
  2. 홀수인 경우:
    • range(1, n + 1, 2)로 1부터 n까지의 홀수 생성
    • sum()으로 모든 홀수의 합 계산
  3. 짝수인 경우:
    • range(2, n + 1, 2)로 2부터 n까지의 짝수 생성
    • i * i로 각 짝수의 제곱 계산
    • sum()으로 제곱 값들의 합 계산

 

조건 문자열

def solution(ineq, eq, n, m):
    if ineq == ">" and eq == "=":
        return 1 if n >= m else 0
    elif ineq == "<" and eq == "=":
        return 1 if n <= m else 0
    elif ineq == ">" and eq == "!":
        return 1 if n > m else 0
    else:# ineq == "<" and eq == "!"
        return 1 if n < m else 0

def solution(ineq, eq, n, m):
    return int(eval(str(n) + ineq + eq.replace('!', '') + str(m)))

설명:

  1. ineq와 eq의 조합에 따라 4가지 경우를 처리:
    • ">=" : n이 m보다 크거나 같은 경우
    • "<=" : n이 m보다 작거나 같은 경우
    • ">" : n이 m보다 큰 경우
    • "<" : n이 m보다 작은 경우
  2. 각 경우에 대해:
    • 조건이 참이면 1 반환
    • 조건이 거짓이면 0 반환

 

flag에 따라 다른 값 반환하기

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

설명:

  1. flag 값을 확인하여:
    • True인 경우: a + b를 반환
    • False인 경우: a - b를 반환
  2. 조건부 표현식(삼항 연산자)을 사용하여 한 줄로 작성

 


DAY5 조건문

 

코드 처리하기

def solution(code):
    ret = ''
    mode = 0

    for idx in range(len(code)):
        if code[idx] == '1':
            mode = 1 - mode# mode 전환 (0->1 또는 1->0)
            continue

        if mode == 0:
            if idx % 2 == 0:# 짝수 인덱스
                ret += code[idx]
        else:# mode == 1
            if idx % 2 == 1:# 홀수 인덱스
                ret += code[idx]

    return ret if ret else "EMPTY"

설명:

  1. 변수 초기화:
    • ret: 결과 문자열 (빈 문자열로 시작)
    • mode: 초기값 0
  2. 문자열 순회:
    • idx를 0부터 code의 길이-1까지 반복
  3. 각 문자 처리:
    • code[idx]가 '1'이면:
      • mode를 전환 (0->1 또는 1->0)
      • 다음 문자로 넘어감
    • mode가 0일 때:
      • 짝수 인덱스이면 ret에 문자 추가
    • mode가 1일 때:
      • 홀수 인덱스이면 ret에 문자 추가
  4. 결과 반환:
    • ret가 비어있으면 "EMPTY" 반환
    • 그렇지 않으면 ret 반환

 

등차수열의 특정한 항만 더하기

def solution(a, d, included):
    total = 0
    for i in range(len(included)):
        if included[i]:# True인 경우만 더함
            term = a + (i * d)# i번째 항 계산
            total += term
    return total

설명:

  1. 변수 초기화:
    • total: 선택된 항들의 합을 저장할 변수
  2. included 배열 순회:
    • i는 0부터 included 길이-1까지 반복
    • included[i]가 True인 경우만 처리
  3. 등차수열의 항 계산:
    • i번째 항 = 첫항(a) + (i * 공차(d))
    • 예: 3항이면 i=2, a=3, d=4일 때, 3 + (2 * 4) = 11
  4. 선택된 항 더하기:
    • included[i]가 True일 때만 해당 항을 total에 더함

 

주사위 게임

def solution(a, b, c):
# 세 숫자가 모두 같은 경우
    if a == b == c:
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)

# 두 숫자만 같은 경우
    elif a == b or b == c or a == c:
        return (a + b + c) * (a**2 + b**2 + c**2)

# 세 숫자가 모두 다른 경우
    else:
        return a + b + c

설명:

  1. 세 숫자가 모두 같은 경우:
    • (a + b + c) × (a² + b² + c²) × (a³ + b³ + c³) 계산
    • 예: 4, 4, 4 → (12) × (48) × (192) = 110,592
  2. 두 숫자만 같은 경우:
    • (a + b + c) × (a² + b² + c²) 계산
    • 예: 5, 3, 3 → 11 × 43 = 473
  3. 세 숫자가 모두 다른 경우:
    • 단순히 a + b + c 계산
    • 예: 2, 6, 1 → 9

또는 set을 사용하여 더 간단하게 작성할 수도 있습니다:

def solution(a, b, c):
    nums = len(set([a, b, c]))# 서로 다른 숫자의 개수

    if nums == 1:# 모두 같은 경우
        return (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
    elif nums == 2:# 두 숫자가 같은 경우
        return (a + b + c) * (a**2 + b**2 + c**2)
    else:# 모두 다른 경우
        return a + b + c

두 방식 모두 같은 결과를 도출하며, 제한사항(1 ≤ a,b,c ≤ 6)을 만족합니다.

 

원소들의 곱과 합

def solution(num_list):
# 모든 원소의 곱 계산
    multiply = 1
    for num in num_list:
        multiply *= num

# 모든 원소의 합의 제곱 계산
    sum_square = sum(num_list) ** 2

# 곱이 합의 제곱보다 작으면 1, 크면 0 반환
    return 1 if multiply < sum_square else 0

또는 더 파이썬스럽게 작성하면:

from math import prod

def solution(num_list):
    return 1 if prod(num_list) < sum(num_list)**2 else 0

설명:

  1. 모든 원소의 곱 계산:
    • 첫 번째 방법: multiply 변수를 1로 초기화하고 각 원소를 곱함
    • 두 번째 방법: prod() 함수 사용
  2. 모든 원소의 합의 제곱 계산:
    • sum() 함수로 합을 구한 후 제곱
  3. 비교:
    • 곱이 합의 제곱보다 작으면 1 반환
    • 크면 0 반환

 

이어 붙일 수

def solution(num_list):
# 홀수와 짝수 문자열 초기화
    odd = ''
    even = ''

# 숫자를 분류하여 문자열로 이어붙이기
    for num in num_list:
        if num % 2 == 0:# 짝수
            even += str(num)
        else:# 홀수
            odd += str(num)

# 문자열을 정수로 변환하여 합 반환
    return int(odd) + int(even)

또는 리스트 컴프리헨션을 사용하여 더 파이썬스럽게 작성할 수 있습니다:

def solution(num_list):
    odd = ''.join(str(n) for n in num_list if n % 2 == 1)
    even = ''.join(str(n) for n in num_list if n % 2 == 0)
    return int(odd) + int(even)

설명:

  1. 홀수와 짝수 분리:
    • 각 숫자를 순회하면서 짝수와 홀수 분류
    • str()로 문자열로 변환하여 이어붙이기
  2. 문자열 변환:
    • join()을 사용하여 각 숫자를 하나의 문자열로 연결
  3. 결과 계산:
    • 홀수 문자열과 짝수 문자열을 정수로 변환
    • 두 수의 합을 반환

테스트 케이스:

print(solution([3, 4, 5, 2, 1]))# 393 (351 + 42)
print(solution([5, 7, 8, 3]))# 581 (573 + 8)

 

 

 

반응형