5.23 미경이 스터디

코변·2022년 5월 23일
0
post-thumbnail

Photo by Pietro Mattia on Unsplash

07:00 ~ 08:00

코드업 마지막 문제를 풀었다. 솔직히 내 코드가 조금 부끄러워서 공개하고 싶지 않지만 앞으로 코드를 어떤식으로 개선하는지 기록하는 것도 나에게 도움이 될 것 같다.

코드업 98번 성실한 개미 문제

처음엔 다음과 같은 의사코딩으로 먼저 접근해보았다.

미로는 10 * 10의 이차원 배열이다.
개미의 시작점은 [1,1]이다.
더이상 움직이지 못하거나 먹이를 찾은경우 그곳에 머무른다.
개미는 오른쪽을 '우선'으로 한칸씩 움직인다.
오른쪽이 벽에 막혀있다면 아래쪽으로 움직인다.

그리고 그걸 그대로 코드로 옮겨 실행했고 아래와 같은 코드로 작성하였다.

maze = []
for i in range(10):
    maze.append(list(map(int, input().split())))
cur_p = [1,1]

while True:
    if maze[cur_p[0]][cur_p[1]] == 2:
        maze[cur_p[0]][cur_p[1]] = 9
        break
    maze[cur_p[0]][cur_p[1]] = 9
    if maze[cur_p[0]][cur_p[1]+1] == 0 or maze[cur_p[0]][cur_p[1]+1] == 2:
        cur_p[1]+=1
    else:
        if maze[cur_p[0]+1][cur_p[1]] == 1:
            break
        else:
            cur_p[0]+=1
for i in range(10):
    print(' '.join(map(str, maze[i])))

다음 이동할 지점인 next_pos를 만들어서 확인하고 while문을 break하는게 더 효율적이었을까 하는 생각이 든다.

프로그래머스 lv1 음양 더하기

정수들의 절대값이 담긴 배열 absolutes 와 음수인지 양수인지 boolean값으로 표시한 signs를 받아 실제값의 합을 구하는 문제다.

파이썬의 반복문을 사용하면 비교적 쉽게 풀 수 있는 문제기에 딱히 의사코딩이나 조건에 대한 생각없이 편하게 풀 수 있었다.

아래는 먼저 시도해본 코드이다.

def solution(absolutes, signs):
    answer = 0
    for idx, sign in enumerate(signs):
        if sign:
            answer += absolutes[idx]
        else:
            answer -= absolutes[idx]
    return answer

이 코드를 보고 삼항연산자로 한줄코드를 할 수 있지 않을까 생각해서 줄여본 코드 제출해보니 잘 동작해서 통과가 되었다.

def solution(absolutes, signs):
    answer = [absolute if signs[idx] else -1 * absolute for idx, absolute in enumerate(absolutes)]
    return sum(answer)
profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글