1. 문자열을 정수로 변환하기
def solution(n_str):
return int(n_str)
2. 문자열의 뒤의 n글자
def solution(my_string, n):
return my_string[-n:]
다른사람의 풀이
1)
solution = lambda my_string, n:my_string[len(my_string)-n:]
ㄴ 굳이 어렵게 품
2)
def solution(my_string, n):
length=len(my_string)-n
answer = my_string[length:]
return answer
ㄴ 굳이 어렵게 품22
3. 문자열로 변환
def solution(n):
return str(n)
다른사람의 풀이
1)
def solution(n):
answer = f'{n}'
return answer
4. n번째 원소부터
def solution(num_list, n):
return num_list[(n-1):]
다른사람의 풀이
1)
solution=lambda x,y:x[y-1:]
2)
def solution(num_list, n):
answer = []
for i in range(n-1,len(num_list)):
answer.append(num_list[i])
return answer
5. rny_string
def solution(rny_string):
return rny_string.replace("m","rn")
다른사람의 풀이
1)
def solution(rny_string):
answer = []
for x in rny_string:
if x=='m': answer.append('rn')
else: answer.append(x)
return ''.join(answer)
2)
def solution(rny_string):
return "".join([(lambda x:"rn" if x == "m" else x)(x) for x in rny_string])
6. 두 수의 연산값 비교하기
def solution(a, b):
x = int(str(a)+str(b))
y = 2*a*b
return max(x,y)
에러남
return max(x,y)
^
IndentationError: unindent does not match any outer indentation level
수정한 코드
def solution(a, b):
x = int(str(a)+str(b))
y = int(2*a*b)
return max(x,y)
7. 수 조작하기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
elif i == "a":
answer-=10
return answer
출력값이 틀렸다. 왜 틀렸지.. 왜 계산을 못하니!!
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
elif i == "a":
answer-=10
return answer
다른사람의 풀이
1)
def solution(n, control):
key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
return n + sum([key[c] for c in control])
2)
def solution(n, control):
control_dict = {'w' : "1" , 's' : "-1", 'd' : "10", 'a' : "-10"}
return eval("+".join(control_dict[letter] for letter in control)) + n
3)
def solution(n, control):
four = {"w":1, "s":-1, "d":10, "a":-10}
return n + sum([four[i] for i in control])
4)
def solution(n, control):
controlLen = len(control);
controlObj = {
"w": 1,
"s": -1,
"d": 10,
"a": -10
};
if (n >= -100000 and n <= 100000) and (controlLen >= 1 and controlLen <= 100000):
for c in control:
n += controlObj[c];
return n;
8. 정수 찾기
def solution(num_list, n):
if n in num_list: return 1
else: return 0
다른사람의 풀이
1)
def solution(num_list, n):
return int(n in num_list)
ㄴ False = 0, True = 1
2)
def solution(num_list, n):
if n in num_list: return 1
return 0
3)
def solution(num_list, n):
return [0,1][n in num_list]
9. 홀짝 구분하기
a = int(input())
if a%2==0:
print(a, 'is even')
else :
print(a, 'is odd')
다른사람의 풀이
1)
a = int(input())
if a % 2 == 0:
print(f'{a} is even')
else:
print(f'{a} is odd')
2)
N = int(input())
print(f"{N} is {'even' if N % 2 == 0 else 'odd'}")
3)
a=input()
print(f"{a} is {['even','odd'][int(a)%2]}")
10. 뒤에서 5등까지
def solution(num_list):
num_list.sort()
return num_list[:5]
다른사람의 풀이
1)
def solution(num_list):
return sorted(num_list)[:5]
2)
def solution(num_list):
answer = []
for i in range(5):
answer.append(min(num_list))
num_list.remove(min(num_list))
return answer
3)
solution = lambda l: sorted(l)[:5]
11. 문자열 붙여서 출력하기
str1, str2 = input().strip().split(' ')
print(str1+str2)
다른사람의 풀이
1)
print(input().strip().replace(' ', ''))
2)
str1, str2 = input().strip().split(' ')
print(str1, str2, sep='')
3)
print(''.join(input().strip().split(' ')))
12. 대문자로 바꾸기
def solution(myString):
return myString.upper()
다른사람의 풀이
1)
def solution(myString):
answer = ''
for i in myString:
if i.islower:
answer += i.upper()
else:
answer += i
return answer
2)
solution = lambda n : n.upper()
3)
def solution(myString):
return ''.join(c.upper() for c in myString)
13. 더 크게 합치기
def solution(a, b):
return max(int(str(a)+str(b)), int(str(b)+str(a)))
다른사람의 풀이
1)
def solution(a, b):
return int(max(f"{a}{b}", f"{b}{a}"))
2)
def solution(a, b):
a,b=str(a),str(b)
return max(int(a+b), int(b+a))
14. 홀짝에 따라 다른 값 반환하기
def solution(n):
if n%2 == 1:
for i in range(1,n):
if i%2==1:
n+=i
return n
elif n%2 ==0:
for i in range(1,n):
if i%2==0:
n+=(i**2)
return n
계산이 틀림.
<챗GPT>
주어진 코드의 문제점은 반복문 내에서 return 문이 사용된 부분입니다. return 문이 반복문 내에 있기 때문에 반복문이 한 번 실행된 후에 함수가 즉시 종료되어버립니다. 따라서 반복문을 모두 실행하고 그 후에 결과를 반환해야 합니다.
def solution(n):
if n % 2 == 1:
result = 0
for i in range(1, n + 1, 2): # 홀수인 경우
result += i
return result
else:
result = 0
for i in range(2, n + 1, 2): # 짝수인 경우
result += i ** 2
return result
<챗GPT 추가설명>
range(1, n)은 1부터 n-1까지의 범위를 생성합니다. 즉, n을 포함하지 않습니다. range(1, n + 1, 2)는 1부터 n까지의 범위를 생성하되, 각 숫자 사이의 간격이 2씩 증가하는 것을 의미합니다. 즉, 홀수만을 포함하는 범위입니다. 따라서 짝수의 합을 구할 때는 range(2, n + 1, 2)를 사용해야 합니다.
다른사람의 풀이
1)
def solution(n):
return sum(x ** (2 - x % 2) for x in range(n + 1) if n % 2 == x % 2)
2)
def solution(n):
if n%2:
return sum(range(1,n+1,2))
return sum([i*i for i in range(2,n+1,2)])
3)
def solution(n):
answer = 0
if n%2:
for i in range(1,n+1,2):
answer += i
else:
for i in range(2,n+1,2):
answer += i**2
return answer
15. 카운트 업
def solution(start_num, end_num):
num_list = list(range(0,51))
return num_list[start_num:(end_num+1)]
다른사람의 풀이
1)
def solution(start, end):
return list(range(start, end + 1))
2)
def solution(start, end):
return [i for i in range(start,end+1)]
3)
def solution(start, end):
answer = []
while start<=end:
answer.append(start)
start+=1
return answer
4)
solution = lambda start, end: [i for i in range(start, end+1)]
16. n의 배수 고르기
def solution(n, numlist):
answer = []
for i in numlist:
if i%n == 0:
answer.append(i)
return answer
다른사람의 풀이
1)
def solution(n, numlist):
answer = [i for i in numlist if i%n==0]
return answer
2)
def solution(n, numlist):
return list(filter(lambda v: v%n==0, numlist))
17. n번째 원소까지
def solution(num_list, n):
return num_list[:n]
다른사람의 풀이
1)
def solution(num_list, n):
return [v for i,v in enumerate(num_list) if i<n]
18. 조건에 맞게 수열 변환하기 3
def solution(arr, k):
answer = []
if k%2 == 1:
for i in arr:
answer.append(i*k)
elif k%2 == 0:
for i in arr:
answer.append(i+k)
return answer
다른사람의 풀이
1)
def solution(arr, k):
return [i*k if k%2!=0 else i+k for i in arr]
2)
def solution(arr, k):
if k % 2 != 0:
return list(map(lambda x: x * k, arr))
return list(map(lambda x: x + k, arr))
3)
def solution(arr, k):
if k%2==0:
return [a+k for a in arr]
else:
return [a*k for a in arr]
19. 조건에 맞게 수열 변환하기 1
def solution(arr):
answer = []
for i in arr:
if i >= 50 and i%2 ==0:
answer.append(i/2)
elif i<50 and i%2 ==1:
answer.append(i*2)
return answer
실행한 결괏값 [2,6,50,49]이 기댓값 [2,2,6,50,99,49]과 다릅니다.
def solution(arr):
answer = []
for i in arr:
if i >= 50 and i%2 ==0:
answer.append(i//2)
elif i<50 and i%2 ==1:
answer.append(i*2)
else: answer.append(i)
return answer
다른사람의 풀이
1)
def solution(arr):
for i in range(len(arr)):
if arr[i] >= 50 and not arr[i] % 2:
arr[i] //= 2
elif arr[i] < 50 and arr[i] % 2:
arr[i] *= 2
return arr
20. n보다 커질 때까지 더하기
def solution(numbers, n):
answer = 0
for i in numbers:
answer+=i
if answer > n:
break
return answer
다른사람의 풀이
1)
def solution(numbers, n):
return next(sum(numbers[:i + 1]) for i in range(len(numbers)) if sum(numbers[:i + 1]) > n)
2)
def solution(numbers, n):
answer = 0
i=0
while answer<=n:
answer+=numbers[i]
i+=1
return answer
'[내배캠 AI코스] TIL' 카테고리의 다른 글
내일배움캠프 20일차 TIL - 모의면접 Lv 1 (0) | 2024.03.26 |
---|---|
내일배움캠프 19일차 TIL - SQL① (1) | 2024.03.25 |
내일배움캠프 16일차 TIL - 코드카타 문제들② (0) | 2024.03.19 |
내일배움캠프 15일차TIL - 코드카타 문제들① (0) | 2024.03.18 |
내일배움캠프 13일차 TIL - 3번 과제 (0) | 2024.02.29 |