728x90
반응형
SMALL

문제 설명

정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다. slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다.

  • n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지
  • n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지
  • n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지
  • n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로

올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요.


제한사항

  • n 은 1, 2, 3, 4 중 하나입니다.
  • slicer의 길이 = 3
  • slicer에 담긴 정수를 차례대로 a, b, c라고 할 때
    • 0 ≤ a ≤ b ≤ num_list의 길이 - 1
    • 1 ≤ c ≤ 3
  • 5 ≤ num_list의 길이 ≤ 30
  • 0 ≤ num_list의 원소 ≤ 100

입출력 예

n slicer num_list result

3 [1, 5, 2] [1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 3, 4, 5, 6]
4 [1, 5, 2] [1, 2, 3, 4, 5, 6, 7, 8, 9] [2, 4, 6]

입출력 예 설명

입출력 예 #1

  • [1, 2, 3, 4, 5, 6, 7, 8, 9]에서 1번 인덱스부터 5번 인덱스까지 자른 리스트는 [2, 3, 4, 5, 6]입니다.

입출력 예 #2

  • [1, 2, 3, 4, 5, 6, 7, 8, 9]에서 1번 인덱스부터 5번 인덱스까지 2개 간격으로 자른 리스트는 [2, 4, 6]입니다.
package Lv0;

import java.util.ArrayList;

/*
정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다.
slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다.

n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지
n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지
n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지
n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로
올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요.
 */
public class H181897 {
	public int[] solution(int n, int[] slicer, int[] num_list) {
		ArrayList<Integer> result = new ArrayList<>();
		int a = slicer[0];
		int b = slicer[1];
		int c = slicer[2];

		if (n == 1) {
			for (int i = 0; i < b; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 2) {
			for (int i = a; i < num_list.length; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 3) {
			for (int i = a; i <= b; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 4) {
			for (int i = a; i <= b; i += c) {
				result.add(num_list[i]);
			}
		}
		int[] answer = new int[result.size()];
		for (int i = 0; i < result.size(); i++) {
			answer[i] = result.get(i);
		}
		return answer;
	}
}

테스트 1 〉 통과 (0.03ms, 74.5MB)

테스트 2 〉 실패 (0.02ms, 76.3MB)
테스트 3 〉 통과 (0.03ms, 74.1MB)
테스트 4 〉 실패 (0.02ms, 75.2MB)
테스트 5 〉 통과 (0.07ms, 70.7MB)
테스트 6 〉 실패 (0.04ms, 73.1MB)
테스트 7 〉 통과 (0.06ms, 86.2MB)
테스트 8 〉 통과 (0.04ms, 73.4MB)
테스트 9 〉 실패 (0.02ms, 73.6MB)
테스트 10 〉 통과 (0.04ms, 77.9MB)
테스트 11 〉 통과 (0.02ms, 75.3MB)
테스트 12 〉 통과 (0.03ms, 72.7MB)
테스트 13 〉 통과 (0.02ms, 72.3MB)
테스트 14 〉 통과 (0.02ms, 86.1MB)
테스트 15 〉 통과 (0.02ms, 74.5MB)
테스트 16 〉 통과 (0.04ms, 82.7MB)
테스트 17 〉 실패 (0.03ms, 72.4MB)
테스트 18 〉 통과 (0.03ms, 72.4MB)
테스트 19 〉 통과 (0.04ms, 78.2MB)

2, 4, 6, 7, 17 실패 ㅠㅠ

슬라이싱의 시작 인덱스와 끝 인덱스가 같을 때 발생 이를 수정하려면 슬라이싱 범위를 계산할 때 조건을 명확히 하기!

package Lv0;

import java.util.ArrayList;

/*
정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다.
slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다.

n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지
n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지
n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지
n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로
올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요.
 */
public class H181897 {
	public int[] solution(int n, int[] slicer, int[] num_list) {
		ArrayList<Integer> result = new ArrayList<>();
		int a = slicer[0];
		int b = slicer[1];
		int c = slicer[2];

		if (n == 1) {
			for (int i = 0; i <= b && i < num_list.length; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 2) {
			for (int i = a; i < num_list.length; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 3) {
			for (int i = a; i <= b && i < num_list.length; i++) {
				result.add(num_list[i]);
			}
		} else if (n == 4) {
			for (int i = a; i <= b && i < num_list.length; i += c) {
				result.add(num_list[i]);
			}
		}

		int[] answer = new int[result.size()];
		for (int i = 0; i < result.size(); i++) {
			answer[i] = result.get(i);
		}
		return answer;
	}
}
728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.0' 카테고리의 다른 글

수열과 구간 쿼리 3  (0) 2023.05.09
수열과 구간 쿼리 4  (0) 2023.05.09
치킨쿠폰  (0) 2023.05.09
그림 확대  (0) 2023.05.09
안전지대  (0) 2023.05.08
728x90
반응형
SMALL

문제 설명

프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다. 쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다. 시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.


제한사항

  • chicken은 정수입니다.
  • 0 ≤ chicken ≤ 1,000,000

입출력 예

chicken result

100 11
1,081 120

입출력 예 설명

입출력 예 #1

  • 100마리를 주문하면 쿠폰이 100장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다.
  • 10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
  • 따라서 10 + 1 = 11 을 return합니다.

입출력 예 #2

  • 1081마리를 주문하면 쿠폰이 1081장 발급되므로 서비스 치킨 108마리를 주문할 수 있습니다. 그리고 쿠폰이 1장 남습니다.
  • 108마리를 주문하면 쿠폰이 108장 발급되므로 서비스 치킨 10마리를 주문할 수 있습니다. 그리고 쿠폰이 8장 남습니다.
  • 10마리를 주문하면 쿠폰이 10장 발급되므로 서비스 치킨 1마리를 주문할 수 있습니다.
  • 1마리를 주문하면 쿠폰이 1장 발급됩니다.
  • 가지고 있는 쿠폰이 총 10장이므로 서비스 치킨 1마리를 추가로 주문할 수 있습니다.
  • 따라서 108 + 10 + 1 + 1 = 120 을 return합니다.
package Lv0;
/*
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다.
쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다.
시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
 */
public class H120884 {
	public int solution(int chicken) {
		int serviceChicken = 0;
		int coupons = 0;
		
		while (chicken > 0) {
			serviceChicken += chicken;
			coupons += chicken;
			chicken = coupons / 10;
			coupons %= 10;
		}
		return serviceChicken;
	}
}
테스트 1입력값 〉100기댓값 〉11실행 결과 〉실행한 결괏값 111이 기댓값 11과 다릅니다.
테스트 2입력값 〉1081기댓값 〉120실행 결과 〉실행한 결괏값 1201이 기댓값 120과 다릅니다.

ㅠㅠㅠㅠ 틀렸군여… 어쩐지 너무 쉽게 생각했어요…

생각해보니 그냥 10으로 나누면 될거같아 나눴더니 성공!!

package Lv0;
/*
프로그래머스 치킨은 치킨을 시켜먹으면 한 마리당 쿠폰을 한 장 발급합니다.
쿠폰을 열 장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스 치킨에도 쿠폰이 발급됩니다.
시켜먹은 치킨의 수 chicken이 매개변수로 주어질 때 받을 수 있는 최대 서비스 치킨의 수를 return하도록 solution 함수를 완성해주세요.
 */
public class H120884 {
	public int solution(int chicken) {
		int serviceChicken = 0;
		int coupons = 0;

		while (chicken > 0) {
			serviceChicken += chicken;
			coupons += chicken;
			chicken = coupons / 10;
			coupons %= 10;
		}
		return serviceChicken/10;
	}
}
728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.0' 카테고리의 다른 글

수열과 구간 쿼리 4  (0) 2023.05.09
리스트 자르기  (1) 2023.05.09
그림 확대  (0) 2023.05.09
안전지대  (0) 2023.05.08
배열의 길이를 2의 거듭제곱으로 만들기  (0) 2023.05.08
728x90
반응형
SMALL

문제 설명

직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.


제한사항

  • 1 ≤ picture의 길이 ≤ 20
  • 1 ≤ picture의 원소의 길이 ≤ 20
  • 모든 picture의 원소의 길이는 같습니다.
  • picture의 원소는 '.'과 'x'로 이루어져 있습니다.
  • 1 ≤ k ≤ 10

입출력 예

picture k result

[".xx...xx.", "x..x.x..x", "x...x...x", ".x.....x.", "..x...x..", "...x.x...", "....x...."] 2 ["..xxxx......xxxx..", "..xxxx......xxxx..", "xx....xx..xx....xx", "xx....xx..xx....xx", "xx......xx......xx", "xx......xx......xx", "..xx..........xx..", "..xx..........xx..", "....xx......xx....", "....xx......xx....", "......xx..xx......", "......xx..xx......", "........xx........", "........xx........"]
["x.x", ".x.", "x.x"] 3 ["xxx...xxx", "xxx...xxx", "xxx...xxx", "...xxx...", "...xxx...", "...xxx...", "xxx...xxx", "xxx...xxx", "xxx...xxx"]

입출력 예 설명

입출력 예 #1

  • 예제 1번의 picture는 다음과 같습니다.이를 가로 세로로 k배, 즉 2배 확대하면 그림 파일은 다음과 같습니다.따라서 ["..xxxx......xxxx..", "..xxxx......xxxx..", "xx....xx..xx....xx", "xx....xx..xx....xx", "xx......xx......xx", "xx......xx......xx", "..xx..........xx..", "..xx..........xx..", "....xx......xx....", "....xx......xx....", "......xx..xx......", "......xx..xx......", "........xx........", "........xx........"]를 return 합니다.
  • ..xxxx......xxxx.. ..xxxx......xxxx.. xx....xx..xx....xx xx....xx..xx....xx xx......xx......xx xx......xx......xx ..xx..........xx.. ..xx..........xx.. ....xx......xx.... ....xx......xx.... ......xx..xx...... ......xx..xx...... ........xx........ ........xx........
  • .xx...xx. x..x.x..x x...x...x .x.....x. ..x...x.. ...x.x... ....x....

입출력 예 #2

  • 예제 2번의 picture는 다음과 같습니다.이를 가로 세로로 k배, 즉 3배 확대하면 그림 파일은 다음과 같습니다.
  • x.x .x. x.x
  • 이를 가로 세로로 k배, 즉 3배 확대하면 그림 파일은 다음과 같습니다.

https://school.programmers.co.kr/learn/courses/30/lessons/181836

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

package Lv0;
/*
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다.
이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때,
이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
 */
public class H181836 {
	public String[] solution(String[] picture, int k) {
		int rowCount = picture.length;
		int colCount = picture[0].length();

		String[] answer = new String[rowCount * k];

		for (int i = 0; i < rowCount; i++) {
			StringBuilder sb = new StringBuilder();
			for (int j = 0; j < colCount; j++) {
				char ch = picture[i].charAt(j);
				for (int l = 0; l < k; l++) {
					sb.append(ch);
				}
			}
			String newRow = sb.toString();
			for (int l = 0; l < k; l++) {
				answer[i * k + l] = newRow;
			}
		}
		return answer;
	}
}

 

입출력 예가 제대로 나오지 않아 ㅠㅠ 링크를 넣었습니다!

728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.0' 카테고리의 다른 글

리스트 자르기  (1) 2023.05.09
치킨쿠폰  (0) 2023.05.09
안전지대  (0) 2023.05.08
배열의 길이를 2의 거듭제곱으로 만들기  (0) 2023.05.08
특이한 정렬  (0) 2023.05.08

+ Recent posts