[프로그래머스/java] 배열 회전시키기

2025. 8. 27. 10:50·코테/프로그래머스 JAVA Lv.0

 

 

+ 250902

앞으로 코테는 깃허브에만 업로드 할 예정.

 


 

 

🔗 배열 회전시키기

🔗 깃허브 링크

 

문제 설명

정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다. 배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.


제한사항
  • 3 ≤ numbers의 길이 ≤ 20
  • direction은 "left" 와 "right" 둘 중 하나입니다.

 

입출력 예
numbers direction result
[1, 2, 3] "right" [3, 1, 2]
[4, 455, 6, 4, -1, 45, 6] "left" [455, 6, 4, -1, 45, 6, 4]

입출력 예 설명

입출력 예 #1

  • numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return합니다.

입출력 예 #2

  • numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return합니다.

 

 

문제 풀이

👉🏻 내 코드

class Solution {
    public int[] solution(int[] numbers, String direction) {
        int[] answer = new int[numbers.length];
        
        if(direction.equals("right")){
                answer[0] = numbers[numbers.length-1];
            for(int i = 0; i < numbers.length-1; i++){
                answer[i+1] = numbers[i];
            } 
        } else {
            answer[numbers.length-1] = numbers[0]; 
            for(int i = 1; i < numbers.length; i++){
                answer[i-1] = numbers[i];
            }
        }
        return answer;
    }
}

  

 

😣

if(direction.equals("right")){
    for(int i = 0; i < numbers.length; i++){
        answer[0] = numbers[numbers.length-1];
        answer[i+1] = numbers[i];
    }

처음에 이렇게 작성했었는데 Index -1 out of bounds for length 7 에러가 떴다.

answer[i+1] = numbers[i]; 로 인해 배열 범위가 초과되어 에러가 발생한 것이었다.

예로 i가 2면 answer[2+1]가 되어서 배열 범위 초과

 

그리고 answer[0] = numbers[numbers.length-1]; 이 코드가 불필요하게 for문 안에서 계속 실행되기 때문에 바깥으로 빼줬다.

 

 

 

👉🏻 다른 코드

class Solution {
    public int[] solution(int[] numbers, String direction) {

        int length = numbers.length;
        int[] answer = new int[length];

        int direct = "right".equals(direction) ? 1 : -1;

        for (int i = 0; i < length; i++)
            answer[i] = numbers[(i - direct + length) % length];

        return answer;
    }
}

 

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java] 외계행성의 나이  (0) 2025.08.26
[프로그래머스/java] 합성수 찾기  (0) 2025.08.25
[프로그래머스/java] 콜라츠 수열 만들기  (0) 2025.07.17
[프로그래머스/java/Lv.0] 접미사 배열  (0) 2025.06.01
[프로그래머스/java/Lv.0] 369게임  (0) 2025.05.27
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java] 외계행성의 나이
  • [프로그래머스/java] 합성수 찾기
  • [프로그래머스/java] 콜라츠 수열 만들기
  • [프로그래머스/java/Lv.0] 접미사 배열
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부스트코스
    Java
    lombok
    코테
    부스트코스강의
    에러
    오라클에러
    데이터연동
    업무자동화
    알고리즘
    코딩테스트_입문
    책첵개발일지
    springbot
    git명령어
    프로그래머스
    ORACLE에러
    CS50
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java] 배열 회전시키기
상단으로

티스토리툴바