티스토리 뷰
728x90
문제 설명
정수 n
, left
, right
가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다.
n
행n
열 크기의 비어있는 2차원 배열을 만듭니다.i = 1, 2, 3, ..., n
에 대해서, 다음 과정을 반복합니다.- 1행 1열부터
i
행i
열까지의 영역 내의 모든 빈 칸을 숫자i
로 채웁니다.
- 1행 1열부터
- 1행, 2행, ...,
n
행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. - 새로운 1차원 배열을
arr
이라 할 때,arr[left]
,arr[left+1]
, ...,arr[right]
만 남기고 나머지는 지웁니다.
정수 n
, left
, right
가 매개변수로 주어집니다. 주어진 과정대로 만들어진 1차원 배열을 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n
≤ 107 - 0 ≤
left
≤right
< n2 right
-left
< 105
입출력 예
n | left | right | result |
---|---|---|---|
3 | 2 | 5 | [3,2,2,3] |
4 | 7 | 14 | [4,3,3,3,4,4,4,4] |
입출력 예 설명
입출력 예 #1
- 다음 애니메이션은 주어진 과정대로 1차원 배열을 만드는 과정을 나타낸 것입니다.
입출력 예 #2
- 다음 애니메이션은 주어진 과정대로 1차원 배열을 만드는 과정을 나타낸 것입니다.
문제 풀이 방법
이 문제는 문제 예시처럼 풀면 초과로 인해 해결이 불가하다.
애니메이션 보자마자 바로 든 생각은 배열에 규칙에 맞게 값들을 넣은 다음 left, right 범위에 맞게 잘라서 출력하면 된다고 생각했다.
위와 같은 배열이 있다고 가정 해보자.
숫자 밑에 있는 괄호가 배열의 인덱스이다.
여기서 한가지 규칙을 찾을 수 있다.
배열의 값은 배열 인덱스에서 큰 값 + 1 한 값이 배열 원소 값이 된다.
int row = (int)((i + left) / n) + 1;
int col = (int)((i + left) % n) + 1;
배열 원소 값의 규칙을 찾았으면, 배열 row, col의 값을 구해야한다.
row, col 의 값은 위의 식으로 구할 수 있다.
전체 코드
class Solution {
public int[] solution(int n, long left, long right) {
int[] answer = new int[(int)(right - left) + 1];
for(int i = 0; i < answer.length; i++){
int row = (int)((i + left) / n) + 1;
int col = (int)((i + left) % n) + 1;
answer[i] = Math.max(row, col);
}
return answer;
}
}
728x90
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 쿠키 구입(Java, 자바) (1) | 2023.09.09 |
---|---|
프로그래머스 - 예상 대진표(Java, 자바) (0) | 2023.09.06 |
프로그래머스 - 방금그곡(Java, 자바) (0) | 2023.09.05 |
프로그래머스 - 마법의 엘리베이터(Java, 자바) (0) | 2023.09.04 |
프로그래머스 - 택배상자(Java, 자바) (0) | 2023.09.03 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백엔드 개발자
- java
- 개발자 취준
- 취업준비
- 개발자 취업 준비
- 제로베이스 백준 장학금
- 코딩테스트공부
- 프로그래머스 카카오
- 취준
- 자바
- 알고리즘
- 자바공부
- 코테준비
- 기술 면접 준비
- 제로베이스 백엔드 스쿨
- 주니어 개발자 취업 준비
- 코딩테스트 공부
- 프로그래머스 자바
- 알고리즘 공부
- 취업 준비
- 알고리즘공부
- 개발자 면접 준비
- 프로그래머스
- 코테공부
- 백준
- 코딩테스트
- 백엔드 개발자 기술 면접 준비
- 코딩테스트 준비
- 코테 준비
- 백엔드 개발자 취업 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함