이번에는 내가 작성한 코드와 제일 추천이 많은 풀이를 함께 넣어봐야겠다.
추천 풀이와 나의 풀이가 같다면 내 풀이만 올려둬야겠다.
나름 간결하게 적었다고 생각했는데 다른 사람들의 풀이를 보니 세상에는 대단한 사람들이
많다는 것을 느낀다....
문자열 섞기
문제 설명
길이가 같은 두 문자열 str1과 str2가 주어집니다.
두 문자열의 각 문자가 앞에서부터 서로 번갈아가면서 한 번씩 등장하는 문자열을 만들어 return 하는 solution 함수를 완성해 주세요.
제한사항
1 ≤ str1의 길이 = str2의 길이 ≤ 10
str1과 str2는 알파벳 소문자로 이루어진 문자열입니다.
입출력 예
str1 str2 result
"aaaaa" "bbbbb" "ababababab"
내 풀이
def solution(str1, str2):
answer = ''
for s1, s2 in zip(str1, str2):
answer += s1
answer += s2
return answer
다른 풀이
def solution(str1, str2):
answer = ''.join([str1[i] + str2[i] for i in range(len(str1))])
return answer
문자 리스트를 문자열로 반환하기
문제 설명
문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.
제한사항
1 ≤ arr의 길이 ≤ 200
arr의 원소는 전부 알파벳 소문자로 이루어진 길이가 1인 문자열입니다.
입출력 예
arr result
["a","b","c"] "abc"
내 풀이
def solution(arr):
return ''.join(arr)
문자열 곱하기
문제 설명
문자열 my_string과 정수 k가 주어질 때, my_string을 k번 반복한 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
1 ≤ my_string의 길이 ≤ 100
my_string은 영소문자로만 이루어져 있습니다.
1 ≤ k ≤ 100
입출력 예
my_string k result
"string" 3 "stringstringstring"
"love" 10 "lovelovelovelovelovelovelovelovelovelove"
입출력 예 설명
입출력 예 #1
예제 1번의 my_string은 "string"이고 이를 3번 반복한 문자열은 "stringstringstring"이므로 이를 return 합니다.
입출력 예 #2
예제 2번의 my_string은 "love"이고 이를 10번 반복한 문자열은 "lovelovelovelovelovelovelovelovelovelove"이므로 이를 return 합니다.
내 풀이
def solution(my_string, k):
return my_string*k
더 크게 합치기
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.
제한사항
1 ≤ a, b < 10,000
입출력 예
a b result
9 91 991
89 8 898
입출력 예 설명
입출력 예 #1
a ⊕ b = 991 이고, b ⊕ a = 919 입니다. 둘 중 더 큰 값은 991 이므로 991을 return 합니다.
입출력 예 #2
a ⊕ b = 898 이고, b ⊕ a = 889 입니다. 둘 중 더 큰 값은 898 이므로 898을 return 합니다.
내 풀이
def solution(a, b):
answer = 0
ab = str(a) + str(b)
ba = str(b) + str(a)
if ab > ba:
answer = ab
else:
answer = ba
return int(answer)
다른 풀이
def solution(a, b):
return int(max(f"{a}{b}", f"{b}{a}"))
두 수의 연산값 비교하기
문제 설명
연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.
12 ⊕ 3 = 123
3 ⊕ 12 = 312
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 2 * a * b가 같으면 a ⊕ b를 return 합니다.
제한사항
1 ≤ a, b < 10,000
입출력 예
a b result
2 91 364
91 2 912
입출력 예 설명
입출력 예 #1
a ⊕ b = 291 이고, 2 * a * b = 364 입니다. 둘 중 더 큰 값은 364 이므로 364를 return 합니다.
입출력 예 #2
a ⊕ b = 912 이고, 2 * a * b = 364 입니다. 둘 중 더 큰 값은 912 이므로 912를 return 합니다.
내 풀이
def solution(a, b):
answer = 0
s1 = f"{a}{b}"
s2 = 2 * a * b
if int(s1) == s2:
answer = s1
else:
answer = int(max(int(s1), s2))
return answer
다른 풀이
def solution(a, b):
return max(int(str(a) + str(b)), 2 * a * b)
n의 배수
문제 설명
정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
2 ≤ num ≤ 100
2 ≤ n ≤ 9
입출력 예
num n result
98 2 1
34 3 0
입출력 예 설명
입출력 예 #1
98은 2의 배수이므로 1을 return합니다.
입출력 예 #2
32는 3의 배수가 아니므로 0을 return합니다.
내 풀이
def solution(num, n):
answer = 0
if num % n == 0:
answer = 1
return answer
다른 풀이
def solution(num, n):
return int(not(num % n))
공배수
문제 설명
정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한사항
10 ≤ number ≤ 100
2 ≤ n, m < 10
입출력 예
number n m result
60 2 3 1
55 10 5 0
입출력 예 설명
입출력 예 #1
60은 2의 배수이면서 3의 배수이기 때문에 1을 return합니다.
입출력 예 #2
55는 5의 배수이지만 10의 배수가 아니기 때문에 0을 return합니다.
내 풀이
def solution(number, n, m):
return int(not(number % n or number % m))
홀짝에 따라 다른 값 반환하기
문제 설명
양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.
제한사항
1 ≤ n ≤ 100
입출력 예
n result
7 16
10 220
입출력 예 설명
입출력 예 #1
예제 1번의 n은 7로 홀수입니다. 7 이하의 모든 양의 홀수는 1, 3, 5, 7이고 이들의 합인 1 + 3 + 5 + 7 = 16을 return 합니다.
입출력 예 #2
예제 2번의 n은 10으로 짝수입니다. 10 이하의 모든 양의 짝수는 2, 4, 6, 8, 10이고 이들의 제곱의 합인 22 + 42 + 62 + 82 + 102 = 4 + 16 + 36 + 64 + 100 = 220을 return 합니다.
내 풀이
def solution(n):
answer = 0
if n%2 == 0:
for i in range(n + 1):
if i%2 == 0:
answer += i*i
else:
continue
else:
for i in range(n + 1):
if i%2 == 0:
continue
else:
answer += i
return answer
다른 풀이
def solution(n):
return sum(x ** (2 - x % 2) for x in range(n + 1) if n % 2 == x % 2)
조건 문자열
문제 설명
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
제한 사항
1 ≤ n, m ≤ 100
입출력 예
ineq eq n m result
"<" "=" 20 50 1
">" "!" 41 78 0
입출력 예 설명
입출력 예 #1
20 <= 50은 참이기 때문에 1을 return합니다.
입출력 예 #2
41 > 78은 거짓이기 때문에 0을 return합니다.
내 풀이
def solution(ineq, eq, n, m):
answer = 0
if ineq == ">":
if eq == "=":
answer = n >= m
else:
answer = n > m
else:
if eq == "=":
answer = n <= m
else:
answer = n < m
return int(answer)
다른 풀이
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
flag에 따라 다른 값 반환하기
문제 설명
두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.
제한사항
-1,000 ≤ a, b ≤ 1,000
입출력 예
a b flag result
-4 7 true 3
-4 7 false -11
입출력 예
입출력 예 #1
예제 1번에서 flag가 true이므로 a + b = (-4) + 7 = 3을 return 합니다.
입출력 예 #2
예제 2번에서 flag가 false이므로 a - b = (-4) - 7 = -11을 return 합니다.
내 풀이
def solution(a, b, flag):
return a + b if flag else a - b
다른 사람들의 풀이를 보면서 파이썬스러운 코드라는 것이 참 무서운 것 같다....
'알고리즘 > 프로그래머스' 카테고리의 다른 글
코딩 기초 트레이닝 6 (2) | 2023.09.03 |
---|---|
코딩 기초 트레이닝 5 (0) | 2023.08.04 |
코딩 기초 트레이닝 4 (0) | 2023.08.02 |
코딩 기초 트레이닝 3 (0) | 2023.07.26 |
코딩 기초 트레이닝 1 (0) | 2023.07.24 |