프로그래머스_n^2 배열 자르기

LeeYulhee·2023년 10월 11일
0

💻 문제 출처 : 프로그래머스_n^2 배열 자르기

👉 내가 작성한 답


class Solution {
    public int[] solution(int n, long left, long right) {
        
        int[] answer = new int[(int)(right - left) + 1];
        int index = 0;
        
        for(long i = left; i <= right; i++) {
            int line = (int)(i / n);
            int column = (int)(i % n);
            answer[index] = Math.max(line, column) + 1;
            index++;
        }
        
        return answer;
    }
}
  • 📌 접근 방식
    • 해당 위치의 값은 행과 열의 인덱스 중 더 큰 값의 + 1로 계산할 수 있음
    • n으로 나눈 몫이 행의 인덱스, n으로 나눈 나머지가 열의 인덱스
    • left부터 right까지 순회하는데 행과 열을 구해서 더 큰 값을 찾음 ⇒ 더 큰 값 + 1이 해당 위치의 값
  • 📌 문제 풀이 설명
    • int 배열 answer를 right - left + 1의 크기로 생성
    • int 변수 index를 선언하고 0으로 초기화
    • for문으로 left부터 right 이하까지 1씩 증가하며 순회
      • int 변수 line을 생성하고 i / n으로 초기화
      • int 변수 column을 생성하고 i % n으로 초기화
      • answer[index]에 line과 column 중 큰 수 + 1을 대입
      • index를 1 증가
    • for문 종료 후 return answer



👉 다른 사람이 작성한 답


import java.util.Arrays;
import java.util.stream.LongStream;

class Solution {
    public int[] solution(int n, long left, long right) {
        return LongStream.rangeClosed(left, right).mapToInt(value -> (int) (Math.max(value / n, value % n) + 1)).toArray();
    }
}
  • 📌 접근 방식
    • 위에 내가 작성한 방식과 비슷한데 stream으로 구현
  • 📌 문제 풀이 설명
    • LongStream.rangeClosed(left, right)
      • left부터 right까지의 숫자를 포함하는 스트림을 생성
    • mapToInt
      • 각 스트림의 요소에 대해 주어진 함수를 실행하고 그 결과를 int 타입으로 반환하는 새로운 스트림을 생성
    • value -> (int) (Math.max(value / n, value % n) + 1)
      • value를 n으로 나눈 몫과 나머지 중 큰 값을 선택 + 1
    • toArray()
      • 스트림을 int[] 배열로 변환
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글