-
https://www.acmicpc.net/problem/1913
1913번: 달팽이
N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%201913
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 배열의 크기와 원하는 숫자가 주어졌을 때 달팽이 모양으로 배열을 출력하고
원하는 숫자의 좌표를 출력하는 문제다.
예전에 풀었던 문제랑 비슷해서 한번 가져와 보았다.
SW Academy 1954 달팽이 숫자 JAVA
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq&categoryId=AV5PobmqAPoDFAUq&categoryType=CODE&problemTitle=1954&orderBy=FIRST_REG_DATETIME&selectCodeLan..
soonil.tistory.com
해당 문제는 배열을 하 우 상 좌 순으로 탐색하면서 가장 큰 값부터 넣어서 작은 값까지 넣도록 하였고
방향은 index를 이용해서 탐색하는 느낌으로 구현했다.
반복문을 돌리면서 count 값이 1보다 작을때 멈추도록 하고,
처음 -1,0에서 시작하여 하 우 상 좌 순으로 진행하면서 값을 넣어주고 만약 범위를 벗어나거나
이미 값이 존재하는 경우는 더한 index값을 빼주고 index를 1 증가시켜 방향을 바꾼 뒤
다음 동작을 하도록 하고 이때 index = (index + 1) % 4로 연산을 해주면 0 1 2 3 이 반복되도록 할 수 있다.
이후 현재 저장하려는 값이 내가 원하는 숫자와 같은지 비교하면서 좌표를 저장해주고,
최종적으로 출력을 하는데 출력을 그냥 System.out.println만 사용했더니 시간 초과가 발생하여
StringBuilder를 이용해 해결했다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 15661 링크와 스타트 JAVA (0) 2022.01.03 Baekjoon 1535 안녕 JAVA (0) 2021.12.31 Baekjoon 2665 미로만들기 JAVA (0) 2021.12.29 Baekjoon 1743 음식물 피하기 JAVA (0) 2021.12.28 Baekjoon 10972 다음 순열 JAVA (0) 2021.12.27 댓글