알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 침투 계획 세우기(1606)

HRuler 2023. 2. 21. 16:10

1. 문제

https://www.acmicpc.net/problem/1606

 

1606번: 침투 계획 세우기

첫째 줄에 멍멍이의 금고의 위치를 나타내는 좌표가 주어진다. 각 수는 0이상 1,000,000이하의 정수이다.

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# x, y : 각 좌표
x, y = map(int, input().split())

total = 1
if x > 0 :
    for i in range(1, x + 1):
        total += (6 * i)
    if y < 0:
        if abs(y) <= x:
            total += y
        else:
            total -= x
            for i in range(x, abs(y)):
                total += 4 + (6 * i)
    elif y > 0:
        total += 1
        if y == 1:
            pass
        else:
            for i in range(0, y - 1):
                total += 7 + (6 * (x + i))
elif x < 0:
    for i in range(1, abs(x) + 1):
        total += ((i * 2) - 1) * 3
    if y < 0:
        for i in range(abs(y)):
            total += (4 + ((abs(x) + i) * 6))
    elif y > 0:
        if y <= abs(x):
            total -= y
        else:
            total += x
            for i in range(y - abs(x)):
                total += 1 + ((abs(x) + i) * 6)
elif x == 0:
    if y < 0:
        sum_v = 4
        for i in range(abs(y)):
            total += (sum_v + (i * 6))
    elif y > 0:
        sum_v = 1
        for i in range(y):
            total += (sum_v + (i * 6))
print(total)

3. 후기

 - 이 문제는 2일 동안 고민하여 해결한 문제이다.

 고민하는 기간이 길어지다보면 다른 사람 코드를 참고해볼까라는 유혹이 많다.

 물론 고민만 너무 길어진다면 어느 정도 참고는 필요하겠지만, 혼자 고민해보는 시간만큼 스스로의 개발 실력도 늘어날거라 생각한다.