//머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는
// 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을
// return 하도록 solution 함수를 완성해보세요.
class Solution {
public int[] solution(int money) {
int ice = 5500;
int[] answer = {};
return answer;
}
}
우선 문제를 보면 배열에 값 두개를 넣어서 제출해야한다. 어차피 값은 두개로 종결이니까 그냥 값을 따로 도출해내서 배열 하나하나에 넣어주는게 쉬울 것 같은데 일단 해보자.
class Solution {
public int[] solution(int money) {
int ice = 5500;
int count = 0;
int[] answer = new int[2];
for (int i = ice; ice <= money; ice+=i) {
money -= ice;
count++;
}
answer[0] = count;
answer[1] = money;
return answer;
}
}
우선 이렇게 해결해서 테스트 케이스 첫번째 거는 통과 했다. 통과 못한 경우는 카운트와 money 값이 다 틀렸다. 수정이 필요하다.
class Solution {
public int[] solution(int money) {
int ice = 5500;
int count = 0;
int[] answer = new int[2];
for (int i = 1; ice <= money; ice*=i, i++) {
money -= ice;
count++;
}
answer[0] = count;
answer[1] = money;
return answer;
}
}
for 문의 조건을 약간 손 보니까 테스트케이스는 전부 통과했다. 일단 제출 해보자. 아마 가진 돈이 아이스아메리카노 값보다 적을 경우가 틀릴 것 같긴한데 일단은 구현했으니까.
역시나 실패긴한데 5개중에 3개나 틀렸네? 뭔가 더 문제가 있나? 일단 내가 아는 선에서 해결해보자.
class Solution {
public int[] solution(int money) {
int ice = 5500;
int count = 0;
int[] answer = new int[2];
if (money < ice) {
answer[1] = money;
return answer;
} else {
for (int i = 1; ice <= money; ice *= i, i++) {
money -= ice;
count++;
}
}
answer[0] = count;
answer[1] = money;
return answer;
}
}
if문을 좀 수정해봤다. 다시 제출!
엄,, 안되네 다른 뭔가가 문제라는 것인데 뭐가 문제일까...
복잡하게 조건을 걸지 말고 나누기랑 나머지로 해결해봐야겠다.
class Solution {
public int[] solution(int money) {
int ice = 5500;
int count;
int[] answer = new int[2];
count = money / ice;
money = money % ice;
answer[0] = count;
answer[1] = money;
return answer;
}
}
나누기 나머지 하니까 코드가 줄었다 일단 제출
아 이렇게 간단한걸 왜 저렇게 복잡하게 생각했지 아무튼 통과.
//정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의
// 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.
public class Main {
public static void main(String[] args) {
}
}
class Solution {
public int[] solution(int[] num_list) {
int[] answer = {};
return answer;
}
}
다음 문제. 배열 뒤집긴데 이거 언제 한번 배열 뒤집는 코드를 본적이 있었던 것 같다.
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
class Solution {
public int[] solution(int[] num_list) {
int i = num_list.length - 1;
List<Integer> list = Arrays.asList(i, num_list[i]);
Collections.reverse(list);
Integer[] reverseArr = list.toArray(new Integer[list.size()]);
return num_list;
}
}
컬렉션을 사용해서 이까지는 왔는데 Integer[] 타입과 int[]타입이 부딫혀서 리턴이 안된다. 형변환이 되는지 한번 알아봐야겠다.
class Solution {
public int[] solution(int[] num_list) {
Integer[] b = Arrays.stream(num_list).boxed().toArray(Integer[]::new);
List<Integer> list = Arrays.asList(b);
Collections.reverse(list);
Integer[] reverseArr = list.toArray(b);
int[] a = Arrays.stream(reverseArr)
.mapToInt(Integer::intValue)
.toArray();
return a;
}
}
스트림까지 사용했다. 타입 변환 해준 후에 컬랙션을 사용해서 배열을 뒤집고 다시 타입 변환해서 리턴 값을 받았다.
근데 아마 그냥 배열 값 그대로 받아서 반복문으로 탐색해서 하나하나 뒤집는게 답이 아니였을까 싶긴한데 일단 제출해보자.
정답이다. 아무튼 오늘은 여기까지.
'Coding History' 카테고리의 다른 글
2024 07. 03 ArticleManager 공부 (0) | 2024.07.03 |
---|---|
국비 지원 IT(웹앱개발) 취업반 강의 20일차 (ArticleManager) (0) | 2024.07.03 |
국비 지원 IT(웹앱개발) 취업반 강의 19일차 (ArticleManager) (0) | 2024.07.02 |
2024. 07 .01 문제풀이 (0) | 2024.07.01 |
MVC 패턴이란? (0) | 2024.07.01 |