코딩,해볼까

07.22 - 23. 프로그래머스 : 직사각형 넓이 구하기, 연속된 수의 합 본문

Back/TIL

07.22 - 23. 프로그래머스 : 직사각형 넓이 구하기, 연속된 수의 합

떠굥 2023. 7. 23. 22:34

< 직사각형 넓이 구하기 >

1. 나의 풀이

직사각형의 넓이 = 가로 * 세로

주어지는 2차원 배열에서 dots[*][ ] *가 같다면 세로, dots[ ][*] *가 같다면 가로를 뜻한다.

(세로는 같은 x좌표 선상이지만 y좌표가 다를 것이며, 가로는 같은 y좌표 선상에서 x 좌표가 다르다.)

def solution(dots):
    width = 0
    height = 0
    for i in dots:
        if dots[0][0] == i[0]:
            height += abs(dots[0][1]-i[1])
            
        if dots[0][1] == i[1]:
            width += abs(dots[1][0]-i[0])
    return width*height

 

2. 다른사람의 풀이

꺼내고자 하는 값 dot[세로][가로] 위치와 숫자가 모두 같다. 

이를 활용하여 max, min 함수로 큰 수 - 작은 수 = 선분의 길이 

def solution(dots):
    return (max(dots)[0] - min(dots)[0])*(max(dots)[1] - min(dots)[1])

 

3. 배운 것

abs = absolute value = 절대값 (무조건 결과의 양수값만을 리턴한다)

 

< 연속된 수의 합 >

1. 나의 풀이

def solution(num, total):
    answer = []
    standard = total//num
    stap = num//2
    
    for i in range(1, stap+1):
        answer.append(standard-i)
        answer.append(standard+i)
    answer.append(standard)     
    answer.sort()   
    
    if num % 2 == 0:
        answer.remove(answer[0])

    return answer

 

2. 풀이과정

def solution(num, total):
    answer = []
    # 12 / 3 = 4
    # 4 4 4
    # 3 4 5
    # print(12/3, 14/4)

    # result가 '홀수'개 일 때
    if total%num == 0:
        # 기준값 = total//num
        standard = total//num
        # 기준값의 연속되는 숫자를 만들어서 answer다가 하나씩 append 해준다.
        stap = num//2 # 양 쪽에 몇 개의 수가 들어갈지 계산한 것
        # 왼쪽의 수 구하기
        # answer = [ ...standard -stap, standard -2, standard -1, standard]
        for i in range(1, stap+1):
            answer.append(standard-i)
            answer.append(standard+i)
        answer.append(standard)     
    else:
        standard = total//num
        stap = num//2
        print(standard, stap)

        for i in range(1, stap):
            answer.append(standard-i)

        for i in range(1, stap+1):
            answer.append(standard+i)
        answer.append(standard)         
        # 기준 값
        # 오른쪽의 수 구하기
        # 기준 왼쪽 수 apppend
        # 기준 값 append
        # 기준 오른쪽 수 apppend

        # answer = num//2
        # answer = [ num-2, num -1, num, num+1, num+2 ]
Comments