Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- string
- JavaScript
- math
- HTML
- Algorithm
- 파이썬
- github
- CSS
- sorting
- JS
- array
- 자료구조
- hash table
- Python
- 자료형
- 컴포넌트
- leetcode
- 코딩테스트
- dynamic programming
- JavaSceipt
- greedy
- java
- 프로그래머스
- 변수
- scss
- SasS
- 알고리즘
- vue.js
- 백준
- computed
Archives
- Today
- Total
Posis
[프로그래머스] 배열 회전시키기 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120844
문제 설명
정수가 담긴 배열 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합니다.
나의 풀이
Java
import java.util.ArrayList;
class Solution {
public int[] solution(int[] numbers, String direction) {
ArrayList<Integer> numArray = new ArrayList<>();
for(int i : numbers) {
numArray.add(i);
}
switch(direction) {
case "right":
numArray.remove(numArray.size() - 1);
numArray.add(0, numbers[numbers.length - 1]);
break;
case "left":
numArray.remove(0);
numArray.add(numbers[0]);
break;
}
int[] answer = new int[numArray.size()];
for(int i = 0; i < numArray.size(); i++) {
answer[i] = numArray.get(i);
}
return answer;
}
}
// 방법 2
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if(direction.equals("right")) {
for(int i = 0;i<numbers.length;i++) {
if(i==numbers.length-1) answer[0] = numbers[numbers.length-1];
else answer[i+1] = numbers[i];
}
}
else {//left
for(int i = numbers.length-1;i>=0;i--) {
if(i==0) answer[numbers.length-1] = numbers[0];
else answer[i-1] = numbers[i];
}
}
return answer;
}
}
첫번째 방법은 0.03ms ~ 0.06ms의 시간으로 통과하고 두번째 방법은 0.02ms로 모두 통과
JavaScript
function solution(numbers, direction) {
let answer = [];
let temp1 = numbers[0];
let temp2 = numbers[numbers.length - 1];
switch(direction) {
case "right":
numbers.unshift(temp2);
numbers.pop();
break;
case "left":
numbers.shift();
numbers.push(temp1);
break;
}
return numbers;
}
JavaScript는 배열의 맨앞과 맨뒤의 요소를 제거하고 추가하는 메서드가 존재함
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2022.12.08 |
---|---|
[프로그래머스] 공 던지기 (0) | 2022.12.08 |
[프로그래머스] 모스부호 (1) (1) | 2022.12.07 |
[프로그래머스] 이진수 더하기 (0) | 2022.12.07 |
[프로그래머스] k의 개수 (0) | 2022.12.07 |