Java/프로그래머스
프로그래머스 배열 문제
녹녹1
2024. 1. 6. 22:37
배열 만들기 1
문제
class Solution {
public int[] solution(int n, int k) {
int[] answer = new int[n/k];
for(int i = 0; i < n/k; i++){
answer[i] = k * (i+1);
}
return answer;
}
}
배열 만들기 2
나중에 다시 풀기
배열 만들기 3
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < 2; i++){
for(int j = intervals[i][0]; j <= intervals[i][1]; j ++){
list.add(arr[j]);
}
}
int[] answer = list.stream().mapToInt(i->i).toArray();
return answer;
}
}
배열 비교하기
문제
코드
class Solution {
public int solution(int[] arr1, int[] arr2) {
int answer = 0;
if(arr1.length < arr2.length) answer = -1;
else if(arr1.length > arr2.length) answer = 1;
else{
int sum1 = 0;
int sum2 = 0;
for(int a1 : arr1){
sum1 += a1;
}
for(int a2 : arr2){
sum2 += a2;
}
if(sum1 > sum2) answer = 1;
else if(sum1 < sum2) answer = -1;
else answer = 0;
}
return answer;
}
}
다른 사람 풀이
더보기
class Solution {
public int solution(int[] arr1, int[] arr2) {
if (arr1.length < arr2.length) return -1;
else if (arr1.length > arr2.length) return 1;
int arr1Sum = 0, arr2Sum = 0;
for (int i = 0;i < arr1.length;i++) {
arr1Sum += arr1[i];
arr2Sum += arr2[i];
}
return arr1Sum == arr2Sum ? 0 : (arr1Sum > arr2Sum ? 1 : -1);
}
}
배열 만들기 4
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> array = new ArrayList<>();
int i = 0;
while (i < arr.length) {
if(array.size() == 0){
array.add(arr[i]);
i++;
} else if(array.get(array.size() - 1) < arr[i]){
array.add(arr[i]);
i++;
} else {
array.remove(array.size() - 1);
}
}
int[] stk = new int[array.size()];
for(int j = 0; j < array.size(); j++){
stk[j] = array.get(j);
}
return stk;
}
}
다른 사람 풀이에서는 Stack을 활용한 경우가 많이 보였다.
Stack으로도 풀어보면 좋을 것 같다
배열 삭제하기
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < arr.length; i++){
int index = 0;
for(int j = 0; j < delete_list.length; j++){
if(arr[i] == delete_list[j]){
break;
}else{
index ++;
if(index == delete_list.length){
list.add(arr[i]);
}
}
}
}
int[] answer = list.stream().mapToInt(i->i).toArray();
return answer;
}
}
다른 사람 풀이 (remove 메서드 사용)
더보기
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
List<Integer> list = new ArrayList<>();
for(int n : arr) {
list.add(n);
}
for(int n: delete_list) {
list.remove((Integer)n);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
배열의 원소만큼 추가하기
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i]; j++){
list.add(arr[i]);
}
}
int[] answer = list.stream().mapToInt(i->i).toArray();
return answer;
}
}
다른 사람 풀이
더보기
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
int sum = 0;
for(int i=0; i<arr.length; i++) {
sum += arr[i];
}
answer = new int[sum];
int idx = 0;
for(int i=0; i<arr.length; i++) {
for(int j=0; j<arr[i]; j++) {
answer[idx++] = arr[i];
}
}
return answer;
}
}
배열에서 문자열 대소문자 변환하기
문제
코드
class Solution {
public String[] solution(String[] strArr) {
String[] answer = new String[strArr.length];
for(int i = 0; i < strArr.length; i++){
// if-else 사용
// if(i % 2 == 0){
// answer[i] = strArr[i].toLowerCase();
// }else{
// answer[i] = strArr[i].toUpperCase();
// }
// 삼항 연산자 사용
answer[i] = i % 2 == 0 ? strArr[i].toLowerCase() : strArr[i].toUpperCase();
}
return answer;
}
}
특별한 이차원 배열 1
문제
코드
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i = 0; i<n; i++){
for(int j = 0; j<n; j++){
answer[i][j] = i == j ? 1 : 0;
}
}
return answer;
}
}
다른 사람풀이
더보기
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
for(int i = 0 ; i < n ; i++) {
answer[i][i] = 1;
}
return answer;
}
}
배열 만들기 5
문제
코드
import java.util.*;
class Solution {
public int[] solution(String[] intStrs, int k, int s, int l) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < intStrs.length; i++){
String num = intStrs[i].substring(s, s+l);
if(Integer.parseInt(num) > k){
list.add(Integer.parseInt(num));
}
}
int[] answer = list.stream().mapToInt(i->i).toArray();
return answer;
}
}
빈 배열에 추가, 삭제하기
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, boolean[] flag) {
Stack<Integer> stack = new Stack<>();
for(int i = 0; i < arr.length; i++){
if(flag[i]){
for(int j = 0; j < arr[i]*2; j++){
stack.push(arr[i]);
}
}else{
for(int k = 0; k < arr[i]; k++){
stack.pop();
}
}
}
int[] answer = stack.stream().mapToInt(i->i).toArray();
return answer;
}
}
이차원 배열 대각선 순회하기
문제
코드
class Solution {
public int solution(int[][] board, int k) {
int answer = 0;
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board[i].length; j++){
if(i + j <= k) {
answer += board[i][j];
}
}
}
return answer;
}
}
배열 만들기 6
문제
코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < arr.length; i ++){
if(list.size() == 0){
list.add(arr[i]);
}else if(list.get(list.size() - 1) == arr[i]){
list.remove(list.size() - 1);
}else if(list.get(list.size() - 1) != arr[i]){
list.add(arr[i]);
}
}
if(list.size() == 0){
list.add(-1);
}
int[] answer = list.stream().mapToInt(i->i).toArray();
return answer;
}
}
접미사 배열
문제
코드
import java.util.*;
class Solution {
public String[] solution(String my_string) {
ArrayList<String> list = new ArrayList<>();
for(int i = 0; i< my_string.length(); i++){
list.add(my_string.substring(i));
}
String[] answer = new String[list.size()];
for(int i = 0; i < list.size(); i++){
answer[i] = list.get(i);
}
Arrays.sort(answer);
return answer;
}
}
다른 사람 풀이
더보기
import java.util.Arrays;
class Solution {
public String[] solution(String my_string) {
String[] answer = new String[my_string.length()];
for (int i = 0; i < answer.length; i++) {
answer[i] = my_string.substring(i, my_string.length());
}
Arrays.sort(answer);
return answer;
}
}
특별한 이차원 배열2
문제
코드
배열만들기2 / 배열의 길이를 2의 거듭제곱으로 만들기 / 접미사 배열 / 특별한 이차원 배열2
stack으로 풀어보기) / 배열만들기4 / 배열만들기6