728x90
반응형
DAY 1
문자열 출력
str = input()
print(str)
a, b 출력
a, b = map(int, input().strip().split(' '))
print("a =", a)
print("b =", b)
- 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 (할당)
- print("a =", a)
- "a ="라는 문자열과 변수 a의 값을 출력합니다
- 콤마로 구분된 값들 사이에 자동으로 공백이 추가됩니다
- 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}')
- 직접 'a + b = '라는 텍스트를 출력하는 대신 실제 값을 포함한 형식으로 변경
- f-string을 사용하여 변수 값을 문자열에 삽입
- 불필요한 공백 제거
문자열 연결
str1, str2 = input().strip().split(' ')
print(str1 + str2)
코드 설명:
- input().strip().split(' '): 입력받은 문자열의 앞뒤 공백을 제거하고 공백을 기준으로 나눔
- str1, str2 = ...: 나눈 문자열을 각각 str1과 str2에 할당
- str1 + str2: 두 문자열을 연결(concatenate)
- 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")
코드 설명:
- int(input()): 입력받은 문자열을 정수로 변환
- n % 2 == 0: n을 2로 나눈 나머지가 0인지 확인(짝수 판별)
- 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):]
코드 설명:
- my_string[:s]: 원본 문자열의 시작부터 인덱스 s 전까지의 부분
- overwrite_string: 교체할 문자열
- my_string[s + len(overwrite_string):]: overwrite_string이 끝난 이후부터 끝까지의 부분
예시:
- 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"
- 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
설명:
- 빈 문자열 answer를 생성하여 결과를 저장할 준비를 합니다.
- str1과 str2의 길이가 같으므로, str1의 길이만큼 반복합니다.
- 각 반복에서:
- str1의 i번째 문자와 str2의 i번째 문자를 answer에 순서대로 추가합니다.
- 완성된 answer를 반환합니다.
문자 리스트를 문자열로 변환하기
def solution(arr):
return ''.join(arr)
def solution(arr):
answer = ''
for char in arr:
answer += char
return answer
설명:
- join() 메서드를 사용하여 arr 배열의 모든 요소를 빈 문자열('')로 연결합니다.
- 각 요소가 순서대로 연결되어 하나의 문자열이 만들어집니다.
문자열 곱하기
def solution(my_string, k):
return my_string * k
def solution(my_string, k):
return ''.join([my_string for _ in range(k)])
설명:
- 파이썬에서는 문자열과 정수의 곱셈을 통해 문자열을 반복할 수 있습니다.
- 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)
설명:
- 정수를 문자열로 변환:
- str(a)와 str(b)로 각 정수를 문자열로 변환합니다.
- 문자열 연결:
- str(a) + str(b)로 첫 번째 케이스를 만듭니다.
- str(b) + str(a)로 두 번째 케이스를 만듭니다.
- 문자열을 다시 정수로 변환:
- int()를 사용하여 연결된 문자열을 정수로 변환합니다.
- 두 값을 비교:
- max()를 사용하여 두 값 중 더 큰 값을 반환합니다.
- 같은 경우 ab가 반환됩니다.
두 수의 연산값 비교하기
def solution(a, b):
# 두 수를 이어 붙인 값 계산
ab = int(str(a) + str(b))
# 2 * a * b 계산
mul = 2 * a * b
# 두 값 중 더 큰 값 반환 (같을 경우 ab 반환)
return max(ab, mul)
설명:
- 첫 번째 값(ab) 계산:
- str(a) + str(b)로 두 정수를 문자열로 변환하여 연결
- int()로 다시 정수로 변환
- 두 번째 값(mul) 계산:
- 2 * a * b 계산
- 두 값을 비교:
- 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
설명:
- num을 n으로 나눈 나머지가 0이면 num은 n의 배수입니다.
- 조건부 표현식(삼항 연산자)을 사용하여:
- 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
설명:
- number가 n과 m의 공배수인지 확인하기 위해:
- number를 n으로 나눈 나머지가 0인지 확인 (number % n == 0)
- number를 m으로 나눈 나머지가 0인지 확인 (number % m == 0)
- 두 조건이 모두 참이면 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
설명:
- n이 홀수인지 짝수인지 판별:
- n % 2 == 1로 홀수 판별
- 홀수인 경우:
- range(1, n + 1, 2)로 1부터 n까지의 홀수 생성
- sum()으로 모든 홀수의 합 계산
- 짝수인 경우:
- 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)))
설명:
- ineq와 eq의 조합에 따라 4가지 경우를 처리:
- ">=" : n이 m보다 크거나 같은 경우
- "<=" : n이 m보다 작거나 같은 경우
- ">" : n이 m보다 큰 경우
- "<" : n이 m보다 작은 경우
- 각 경우에 대해:
- 조건이 참이면 1 반환
- 조건이 거짓이면 0 반환
flag에 따라 다른 값 반환하기
def solution(a, b, flag):
return a + b if flag else a - b
설명:
- flag 값을 확인하여:
- True인 경우: a + b를 반환
- False인 경우: a - b를 반환
- 조건부 표현식(삼항 연산자)을 사용하여 한 줄로 작성
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"
설명:
- 변수 초기화:
- ret: 결과 문자열 (빈 문자열로 시작)
- mode: 초기값 0
- 문자열 순회:
- idx를 0부터 code의 길이-1까지 반복
- 각 문자 처리:
- code[idx]가 '1'이면:
- mode를 전환 (0->1 또는 1->0)
- 다음 문자로 넘어감
- mode가 0일 때:
- 짝수 인덱스이면 ret에 문자 추가
- mode가 1일 때:
- 홀수 인덱스이면 ret에 문자 추가
- code[idx]가 '1'이면:
- 결과 반환:
- 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
설명:
- 변수 초기화:
- total: 선택된 항들의 합을 저장할 변수
- included 배열 순회:
- i는 0부터 included 길이-1까지 반복
- included[i]가 True인 경우만 처리
- 등차수열의 항 계산:
- i번째 항 = 첫항(a) + (i * 공차(d))
- 예: 3항이면 i=2, a=3, d=4일 때, 3 + (2 * 4) = 11
- 선택된 항 더하기:
- 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
설명:
- 세 숫자가 모두 같은 경우:
- (a + b + c) × (a² + b² + c²) × (a³ + b³ + c³) 계산
- 예: 4, 4, 4 → (12) × (48) × (192) = 110,592
- 두 숫자만 같은 경우:
- (a + b + c) × (a² + b² + c²) 계산
- 예: 5, 3, 3 → 11 × 43 = 473
- 세 숫자가 모두 다른 경우:
- 단순히 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
설명:
- 모든 원소의 곱 계산:
- 첫 번째 방법: multiply 변수를 1로 초기화하고 각 원소를 곱함
- 두 번째 방법: prod() 함수 사용
- 모든 원소의 합의 제곱 계산:
- sum() 함수로 합을 구한 후 제곱
- 비교:
- 곱이 합의 제곱보다 작으면 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)
설명:
- 홀수와 짝수 분리:
- 각 숫자를 순회하면서 짝수와 홀수 분류
- str()로 문자열로 변환하여 이어붙이기
- 문자열 변환:
- join()을 사용하여 각 숫자를 하나의 문자열로 연결
- 결과 계산:
- 홀수 문자열과 짝수 문자열을 정수로 변환
- 두 수의 합을 반환
테스트 케이스:
print(solution([3, 4, 5, 2, 1]))# 393 (351 + 42)
print(solution([5, 7, 8, 3]))# 581 (573 + 8)
반응형
'취업 및 이직 준비 > 코딩테스트 준비' 카테고리의 다른 글
프로그래머스 코딩 기초 트레이닝 Python Day16 ~ Day25 (0) | 2025.02.11 |
---|---|
프로그래머스 코딩 기초 트레이닝 Python Day6 ~ Day15출처 (2) | 2025.02.10 |
코딩테스트 - 파이썬 - 스티커 수집 문제 (0) | 2023.04.20 |
코딩테스트 - 파이썬 - 상자 채우기 (0) | 2023.04.19 |
코딩테스트 준비 - 팰린드롬 (0) | 2023.04.18 |