[내배캠 AI코스] TIL

내일배움캠프 15일차TIL - 코드카타 문제들①

띵제 2024. 3. 18. 21:14

1. 배열의 평균값

def solution(numbers):

    answer = sum(numbers) / len(numbers)

    return answer

 

다른 사람의 풀이

1)

import numpy as np

def solution(numbers):

    return np.mean(numbers)

 

2)

def solution(numbers):

    return sum(numbers) / len(numbers)

 

3)

def solution(arr):

        return sum(arr)/len(arr)

 

4)

def solution(numbers):

    answer = 0

    count = len(numbers)

    for i in range(count):

        answer += numbers[i]

    return answer/count

 

2. 머쓱이보다 사람

첫번째 시도

def solution(array, height):

    count = 0

    for i in range(int(array)):

        if i > height

        count += 1

    return count

 

오류

if i > height

                ^

SyntaxError: invalid syntax

 

두번째 시도

 

블로그 염탐

def solution(array, height):

    answer = 0

    for i in array:

        if i > height:

            answer += 1 

    return answer

나랑 똑같자나..?

똑같은 오류

 

TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'

 

if 문에 : 추가하고 int 없앰

 

def solution(array, height):

    count = 0

    for i in array:

        if i > height:

            count += 1

    return count

 

다른 사람의 풀이

1)

def solution(array, height):

    array.append(height)

    array.sort(reverse=True)

    return array.index(height)

 

2)

def solution(array, height):

    return sum(1 for a in array if a > height)

 

3)

def solution(array, height):

    return sum(map(lambda x: x > height, array))

 

3. 배열 원소의 길이

def solution(strlist):

    answer = []

    for i in strlist:

        answer.append(len(i))

    return answer

 

 

다른 사람의 풀이

1)

def solution(strlist):

    answer = []

    for i in strlist:

        answer.append(len(i))

    return answer

 

2)

def solution(strlist):

    return [len(str) for str in strlist]

 

3)

def solution(strlist):

    answer = list(map(len, strlist))

    return answer

 

4)

def solution(strlist):

    return list(map(lambda v: len(v), strlist))

 

 

4. 배열 뒤집기

def solution(num_list):

    answer = num_list[::-1]

    return answer

 

다른 사람의 풀이

1)

def solution(num_list):

    result =[]

    while(num_list):

        result.append(num_list.pop())

    return result

 

2)

def solution(num_list):

    num_list.reverse()

    return num_list

 

답이 제일 나음

 

5. 중복된 숫자 개수

def solution(array, n):

    count = 0

    for i in array:

        if i == n:

            count+=1

    

    return count

 

한번에 풀었다!!!

 

다른 사람의 풀이

1)

def solution(array, n):

    return array.count(n)

 

 

6. 배열 자르기

 

def solution(numbers, num1, num2):

    return numbers[num1:(num2+1)]

 

7. 문자열 뒤집기

def solution(my_string):

    my_string = "".join(reversed(my_string))

    return my_string

 

다른 사람의 풀이

1) 원래 하고 싶었던거

def solution(my_string):

    return my_string[::-1]

 

2)

def solution(my_string):

    answer = ''

    a = list(my_string)

    a.reverse()

    for i in a:

        answer += i

 

    return answer

 

3)

def solution(my_string):

    answer = ''

    for c in my_string:

        answer= c+answer

    return answer

 

8. 편지

def solution(message):

    return len(message)*2

 

다른 사람의 풀이

1)

def solution(message):

    return len(message)<<1

 

9. 점의 위치 구하기

def solution(dot):

    if dot[0]>0 and dot[1]>0:

        return 1

    elif dot[0]<0 and dot[1]>0:

        return 2

    elif dot[0]<0 and dot[1]<0:

        return 3

    elif dot[0]>0 and dot[1]<0:

        return 4

    else: return 0

 

 

다른 사람의 풀이

1)

def solution(dot):

    quad = [(3,2),(4,1)]

    return quad[dot[0] > 0][dot[1] > 0]

 

2)

def solution(dot):

    a, b = 1, 0

    if dot[0]*dot[1] > 0:

        b = 1

    if dot[1] < 0:

        a = 2

    return 2*a-b

 

3)

def solution(dot):

    return [[1, 4], [2, 3]][dot[0] < 0][dot[1] < 0]

 

10. 문자열안에 문자열

def solution(str1, str2):

    

    if str2 in str1:

        answer = 1

    else:

        answer = 2

 

    return answer

 

 

다른 사람의 풀이

1)

def solution(str1, str2):

    return 1 if str2 in str1 else 2

 

2)

def solution(str1, str2):

    return 1 + int(str2 not in str1)

 

3)

def solution(str1, str2): return -~(str2 not in str1)

 

11. 특정 문자 제거하기

def solution(my_string, letter):

    return my_string.replace(letter, '')

 

 

다른 사람의 풀이

1)

def solution(my_string, letter):

    result = ''

    for char in my_string:

        if char != letter:

            result += char

    return result

 

12. 아이스 아메리카노

def solution(money):

    return(int(money/5500),int(money)%5500)

 

 

다른 사람이 풀이

1)

def solution(money):

    return divmod(money, 5500)

 

2)

def solution(money):

 

    answer = [money // 5500, money % 5500]

    return answer

 

13. 피자 나눠 먹기(1)

 

def solution(n):

    if n%7 == 0:

        return n//7

    else:

        return (n//7)+1

 

다른 사람이 풀이

1)

def solution(n):

    return (n - 1) // 7 + 1

 

2)

def solution(n):

    return -(-n//7)

 

3)

def solution(n):

    answer = 0

 

    if n%7 != 0:

        answer = (n//7) + 1

    else:

        answer = n//7

 

    return answer

 

14. 최댓값 만들기(1)

import random

 

def solution(numbers):

    n_list=[numbers]

    a = max(random.choice(n_list))

    return a*int(len(n_list))

 

블로그 찾아봄

 

다른 사람이 풀이

1)

def solution(numbers):

    numbers.sort()

    return numbers[-2] * numbers[-1]

 

2)

def solution(numbers):

    answer = 0

    max = 0 

    for i in range(len(numbers)):

        for j in range(len(numbers)):

            if i == j:

                continue

            if max < numbers[i] * numbers[j]:

                max = numbers[i] * numbers[j]

    return max

 

 

15. 배열 만들기

def solution(numbers):

    answer = []

    for i in numbers:

        answer.append(i * 2)

    return answer

 

다른 사람이 풀이

1)

def solution(numbers):

    return [num*2 for num in numbers]

 

2)

def solution(numbers):

    return list(map(lambda x: x * 2, numbers))

 

3)

def solution(numbers):

    return [2*i for i in numbers]

 

16. 피자 나눠 먹기(3)

import math

 

def solution(slice, n):

    if n/slice >= 1:

        return math.ceil(n/slice)

    else: return 0

 

코드실행은 되는데 틀렸다고 나옴

읭?

 

아 어차피 올림하는 거면 굳이 if문이 필요가 없구나?

 

import math

 

def solution(slice, n): return math.ceil(n/slice)

 

 

다른 사람이 풀이

1)

def solution(slice, n):

    return ((n - 1) // slice) + 1

 

2)

def solution(slice, n):

    d, m = divmod(n, slice)

    return d + int(m != 0)

 

3)

def solution(slice, n):

    return n//slice + (1 if n%slice else 0)

 

4)

from math import ceil

def solution(slice, n):

    return ceil(n/slice)

 

17. 짝수 홀수 개수

def solution(num_list):

    a = 0

    b = 0

    for i in num_list:

        if i%2 == 0:

            a += 1

        else:

            b += 1

    return(a,b)

 

다른 사람이 풀이

1)

def solution(num_list):

    answer = [0,0]

    for n in num_list:

        answer[n%2]+=1

    return answer

 

2)

def solution(num_list):

    odd = sum(1 for n in num_list if n % 2)

    return [len(num_list) - odd, odd]

 

3)

def solution(num_list):

    div_num_list = list(map(lambda v: v % 2, num_list))

    return [div_num_list.count(0), div_num_list.count(1)]

 

18. 자릿수 더하기

def solution(n):

    answer = 0

    while n > 0:

        answer += n % 10

        n //= 10

    return answer

 

다른 사람이 풀이

1)

def solution(n):

    answer = 0

    while n:

        n, r = divmod(n, 10)

        answer += r

    return answer

 

2)

def solution(n):

    answer = sum(list(map(int,list(str(n)))))

    return answer

 

3)

def solution(n):

 

    temp = list(str(n))

    answer = 0

    for i in temp :

        answer += int(i)

 

    return answer

 

19. 배열의 유사도

def solution(s1, s2):

    return s1.intersection(s2)

 

오류

AttributeError: 'list' object has no attribute 'intersection'

 

def solution(s1, s2):

    return len(set(s1).intersection(s2))

 

다른 사람이 풀이

1)

def solution(s1, s2):

    answer = 0

 

    for word in s1:

        if word in s2:

            answer += 1

        else:

            continue

 

    return answer

 

2)

def solution(s1, s2):

    dic = {i:1 for i in s1}

    answer = sum(dic.get(j,0)for j in s2)

    return answer

 

20. 양꼬치

def solution(n, k):

    a = n*12000

    if n >= 10:

        b = (n%10)*2000

    elif n <10:

        b = k*2000

    return a+b

 

오류는 아니지만 계산이 틀림. 생각을 잘못한거임.

뭐가 문제지..?

 

나랑 조금 비슷하게 생각한 다른 블로그의 답

 

def solution(n, k):

    tmp = n // 10

    answer = 12000*n + 2000*(k-tmp)

    return answer

 

다른 사람이 풀이

1)

def solution(n, k):

    service=n//10

    answer = 12000*n+(2000*(k-service))

    return answer