Skip to content

[D2] 1954. 달팽이 숫자 #4

Closed

Description

@GeonHui2

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq

풀이 사항

풀이 일자: 2024.00.00
풀이 시간: 00분 00초
채점 결과: 오답/시간 초과/런타임 에러/정답
예상 문제 유형: 구현/BFS/DFS/DP/자료구조/문자열 등

풀이 방법

(풀이 접근 및 방법에 대한 설명)

Activity

  1. GeonHui2 commented on Jan 13, 2024

    @GeonHui2
    ContributorAuthor

    문제 링크

    #8

    풀이 사항

    풀이 일자: 2024.01.13
    풀이 시간: 30분
    채점 결과: 정답
    예상 문제 유형: 구현

    풀이 방법

    • 문제에서 주어진 조건을 구현하면 되는 문제였다.
    • 진행 방향으로 1씩 증가해 주다가 배열의 범위를 넘어서면 진행 방향을 바꿔주고 N * N까지 진행하면 됐다.
    • 하지만 진행하다가 이미 값이 0이 아닌 인덱스는 조건문을 통해서 방향을 바꿔줘야 하지만 이를 고려하지 않았다.
    • 이로 인해서 이 부분을 수정하는데 많은 시간을 소요했고 오류가 생겨서 코드를 수정할 때는 코드를 따라가보면서 수정하는 습관을 길러야 할 거 같다.
  2. ensk26 commented on Jan 15, 2024

    @ensk26
    Contributor

    문제 링크
    #15

    풀이 사항
    풀이 일자: 2024.01.13
    풀이 시간: 40분
    채점 결과: 정답
    예상 문제 유형: 구현

    풀이 방법

    • 1 ~ n*n 까지 반복문을 돌려 배열에 값을 채웠다.
    • 범위를 벗어나거나 이미 방문한 배열이면 방향+1을 해, 방향을 변경해 주었다.
    • 여기서 방문 배열을 하나 만드는 것이 아닌 숫자를 저장하는 배열의 0 값으로 방문 유무를 판단하는 것도 좋은 방법인 것 같다.
    • 이동한 위치를 현재 위치에 저장해야 한다.
    • 반복문을 잘못 작성해 오류를 발견하는데 많은 시간을 소요했다.
  3. skdudddl commented on Jan 16, 2024

    @skdudddl
    Contributor

    문제 링크
    #18

    풀이 사항
    풀이 일자: 2024.01.16
    풀이 시간: 20분
    채점 결과: 정답
    예상 문제 유형: 구현

    풀이 방법

    • 배열 순회문제로 풀면 된다고 생각했다.
    • 순회의 방향의 순서를 생각하여 우, 하, 좌, 상 방향으로 설정했다.
    • 배열을 다 채워야 끝나기 때문에 cnt값은 N*N이 될때까지로 반복문을 설정했다.
    • N개의 배열을 선언하고 초기값은 0임을 이용하여 조건문에서 범위를 확인 후 배열 요소값이 0인 경우일 때 배열에 삽입하도록 했다.
    • 만약 저 조건에 맞지 않은 경우는 배열의 끝이기 때문에 방향을 바꿔주도록 구현했다.
  4. jisooolee commented on Jan 16, 2024

    @jisooolee
    Contributor

    문제 링크

    #20

    풀이 사항

    풀이 일자: 2024.01.16
    풀이 시간: 20분
    채점 결과: 정답
    예상 문제 유형: 구현

    풀이 방법

    • 수업 시간에 배운 실습 문제와 유사해서 동일한 방식을 이용해 풀었다.
    • 방향 벡터 배열 dx, dy를 생성하여 시계방향으로 방향을 바꾸도록 값을 설정해주었다.
    • 배열에 저장할 값을 가지면서 반복문의 조건이 될 cnt 변수를 선언하고 1로 초기화해주었다.
    • cnt 값이 N * N이 될 때까지 배열을 순회하도록 조건을 설정해주었다.
    • 반복문을 돌 때마다 가장 먼저 다음 index 값이 배열의 범위를 넘지 않는지를 검사해주고, 만약 다음 index 값이 배열의 범위 안이라면 해당 위치에 이미 값이 저장되어 있지는 않은지를 확인해주었다.
    • 위의 두 조건 중 하나라도 만족을 할 경우 dx, dy 값을 바꿔주도록 하였다.
    • 다음 번 index에 대한 검사가 끝나면 배열의 현재 index에 값을 넣어주고, dx, dy 값을 더해 다음 index 값을 설정해준 뒤에 cnt 값을 1 증가해주었다.
  5. ramrami-B commented on Jan 16, 2024

    @ramrami-B
    Contributor

    🔗 #23

    💪🏻 풀이 사항

    📅 풀이 일자: 2024.01.17
    ⏰ 풀이 시간: 14분 26초
    🥺 채점 결과: 정답✅
    💡 예상 문제 유형: 구현

    ✍🏻풀이 방법

    사실 싸피 코테 준비하면서 파이썬으로 풀어 본 문제지만 최대한 새로 푸는 것처럼 풀려고 노력해 봤다

    달팽이가 움직이는 방향대로 1부터 하나씩 증가되는 숫자를 snail 배열에 저장해 주고, 동시에 visited 배열에 방문 처리를 해준다.
    여기서 달팽이가 움직이는 방향대로 가는 방법은 설정된 방향대로 쭉 가다가 어떠한 조건을 만나면 방향을 틀어가면서 숫자가 N*N이 될 때까지 계속 쭉 가면 된다.
    방향을 틀 조건은 1) 배열 범위를 벗어났거나 2) 방문한 적이 있는 곳이거나 이다.
    *배열 범위를 체크하는 isIn 함수와 방향 값이 4가 넘어갔을 때 4로 나눈 나머지로 처리하는 방법은 수업 때 배운 내용을 잘 썼다😋

    마지막에 2차원 배열 순회 방법을 사용해서 snail 배열에 있는 값들을 출력하면 끝!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions