프로그래머스 - 정수를 나선형으로 배치하기 문제를 풀고 다른 사람들의 풀이를 보면서 dx, dy를 처음 접했다.
출처: 프로그래머스 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/181832
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
dx dy 테크닉
해당 기술은 이차원 배열에서 상황에 맞게 상, 하, 좌, 우로 움직일 수 있게 한다.
만약 움직여야 하는 개체가 [1][1]에 있을 때,
동쪽으로 움직이려면 x = x + 0, y = y + 1을 해야 한다.
북쪽으로 움직이려면 x = x - 1, y = y + 0을 해야 한다.
위와 같은 값의 변경을 보다 기술적으로 하는 것이 dx dy 테크닉이다.
먼저 아래와 같이 변수와 배열을 선언하는 것으로 시작한다.
변수 x, y는 문제에서 객체가 있는 위치를, dir_num은 방향 정보를 담는다.
배열 dx, dy는 위의 dir_num과 함께 사용한다.
만약 dir_num이 0이라면
dx[0], dy[0]의 값을 각각 x, y에 더한다.
x = x + dx[0], y = y + dy[0]
x = x + 0, y = y + 1
즉, 동쪽으로 이동한다.
3이라면
x = x + dx[3], y = y + dy[3]
x = x - 1, y = y + 0
즉, 북쪽으로 이동한다.
nx, ny는 x, y의 변경을 유연하게 하기 위한 변수이다.
이차원 배열 문제는 개체를 이동하므로 제한이 있거나 범위를 벗어날 수 있다.
따라서 이처럼 nx로 확인을 한 후 동작에 이상이 없으면
해당 값을 x, y에 대입하는 형태로 사용한다.
아래는 dx dy를 사용할 수 있는 문제이다.
출처: 프로그래머스 코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/172928
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Algorithm & PS > Algorithm' 카테고리의 다른 글
알고리듬 - 버블, 선택, 삽입 정렬 (0) | 2023.06.27 |
---|---|
알고리듬 - 슬라이딩 윈도우 (0) | 2023.06.26 |
알고리듬 - 투 포인터 (0) | 2023.06.26 |
알고리듬 - 구간 합 (0) | 2023.06.24 |
알고리듬 - 시간복잡도(Time Complexity) (0) | 2023.06.22 |