개발일기

#1 프로그래머스 알고리즘 정리본 본문

오류 및 알고리즘정리본

#1 프로그래머스 알고리즘 정리본

츄98 2023. 3. 31. 01:17

코딩테스트 1~20문제를 풀면서 인상깊었던 코드들 정리 

 

1. 몫 구하기

# 내가 짠 코드
def solution(num1, num2):
    return num1//num2
    
# 남이 짠 코드1
def solution2(num1, num2):
    return divmod(num1, num2)[0]
#divmod는 몫과 나머지를 구할 수 있다. [0]이 몫, [1]이 나머지 출력

# 남이 짠 코드2
solution3 = int.__floordiv__
# __floordiv__(a,b)는 메서드 뒤 인자가 없이도 출력이 정상작동된다.

 

 

2. 짝수 더하기 (n이하의 짝수들의 합 구하기)

# 내가 짠 코드
def solution(n):
    a = n//2
    b = 0
    for i in range(a+1):
        b += 2*i
    return b
    
# 남이 짠 코드1
def solution2(n):
    return sum(range(0, n+1, 2))

# 남이 짠 코드2
def solution3(n):
    return sum(i for i in range(1, n+1) if i % 2 == 0)
# 이건 내가 짠 코드랑 원리는 똑같은데.. 한 줄의 마법 ㅎㅎ 훨씬 짧다 ㅎㅎ
# 나도 다음엔 이렇게 코딩하자!!

 

 

3. 평균 구하기(리스트 평균)

# 내가 짠 코드
def solution(numbers):
    return sum(numbers)/len(numbers)
    
# 남이 짠 코드
import statistics
def solution2(numbers):
    return statistics.mean(numbers)

 

 

4. 좌표평면 문제: 점이 주어졌을 때 위치 구하기

# 내기 짠 코드
def solution(dot):
    if dot[0] > 0:
        return 1 if dot[1]>0 else 4
    else:
        return 2 if dot[1]>0 else 3
        
# 남이 짠 코드
def solution(dot):
    quad = [(3,2),(4,1)]
    return quad[dot[0] > 0][dot[1] > 0]
# True = 1, False = 0 || [0][0]:3사분면, [0][1]:2사분면, [1][0]:4사분면, [1][1]:1사분면
# 이렇게도 할 수 있구나! 신기했당

 

 

5. 최댓값 구하기1 :

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값

# 내가 짠 코드
def solution(numbers):
    numbers.sort(reverse=True)
    return numbers[0]*numbers[1]
    
# 남이 짠 코드1
def solution(numbers):
    numbers.sort()
    return numbers[-2] * numbers[-1]
# 나랑 비슷한 코드지만.. 새로운 관점을 제시해줘서 정리해보았다.