slice | n | reuslt |
---|---|---|
7 | 10 | 2 |
4 | 12 | 3 |
입출력 예 #1
입출력 예 #2
📌 나의 풀이
class Solution {
public int solution(int slice, int n) {
int result = 0;
if(n % slice == 0){
result = n / slice;
}else{
result = ( n / slice ) + 1;
}
return result;
}
}
🎈 idea
조각을 사람으로 나누어서 딱 나누어 떨어지면 나눈 몫을 리턴하고, 나눈 나머지가 0이 아니면, 몫 +1 을 하면 최소 시켜야 하는 피자를 알 수 있다.
n | reuslt |
---|---|
7 | 1 |
1 | 1 |
15 | 3 |
📌 나의 풀이
class Solution {
public int solution(int n) {
int piece = 7;
int answer = 0;
if(n % piece == 0){
answer = n / piece ;
}else{
answer = (n / piece) + 1;
}
return answer;
}
}
money | result |
---|---|
5,500 | [1,0] |
15,000 | [2,4000] |
📌나의 풀이
class Solution {
public int[] solution(int money) {
int[] answer = new int[2];
int count = 0;
int payback = 0;
count = money/5500 ;
payback = money - (count * 5500);
answer[0] = count ;
answer[1] = payback;
return answer;
}
}
🎈 idea
count = money/5500 ;
payback = money - (count * 5500);
매개변수 money / 5500 하면 몫이 나오는데 이것을 count (잔 수), 돌려받을 금액은
money에서 잔수*한잔의 금액을 빼면 돌려받을 금액을 알 수 있다.
📌쇼킹한 풀이
class Solution {
public int[] solution(int money) {
return new int[] { money / 5500, money % 5500 };
}
}
my_string | return |
---|---|
"jaron" | "noraj" |
"bread" | "daerb" |
나의 풀이
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i = my_string.length()-1; i >= 0; i--){
answer += my_string.substring(i,i+1);
}
return answer;
}
}
ideal
import java.util.*;
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder();
sb.append(my_string);
sb.reverse();
return sb.toString();
}
}
my_string | letter | result |
---|---|---|
"abcdef" | "f" | "abcde" |
"BCBdbe" | "B" | "Cdbe" |
나의 풀이
class Solution {
public String solution(String my_string, String letter) {
String[] arr = my_string.split("");
String answer = "";
for(int i = 0; i<arr.length; i++) {
if(arr[i].equals(letter)) {
continue;
}else {
answer += arr[i];
}
}
return answer;
}
}
매개 변수 my_string은 문자열이다. 매개변수로 받은 문자열을 배열로 짤라 넣는다.
.split() method 를 이용하여 한글자 단위로 쪼개어 String[] str 배열에 넣는다.
arr[i].equals (letter) 에서 특정 문자와 같은지 비교하여 같으면 continue
다르면 answer 문자열에 arr[i] 값을 더해준다.
ideal
class Solution {
public String solution(String my_string, String letter) {
String answer = "";
answer = my_string.replaceAll(letter, "");
return answer;
}
}
String 문자열에 replaceAll 메서드를 이용하여 특정문자를 빼고 재배열하는 방법을 사용
n | result |
---|---|
10 | [1,3,5,7,9] |
15 | [1,3,5,7,9,11,13,15] |
입출력 #1
10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.
입출력 #2
15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.
나의 풀이
class Solution {
public int[] solution(int n) {
int[] answer;
int j = 0;
if(n % 2 == 0){ // even
answer = new int[n/2];
}else{ //odd
answer = new int[n/2+1];
}
for(int i = 0; i <= n; i++){
if(i % 2 == 1){
answer[j] = i;
j++;
}
}
return answer;
}
}
나의 생각
1차원적으로 너무 배열
만을 생각한 문제인거같다. java에선 배열 이외에도 Array, ArrayList 등 더 쉽게 표현할 수 있는 방법들이 있지만 응용을 생각하지 않고 기본에서 머물러있다는 느낌이 든다. 알고리즘 문제를 생각할 때 더 쉽게 표현할 수 있거나, 더 간단한 방법을 우선적으로 생각하자!
정수 n이 매개변수로 주어지고, 이를 사용하여 배열의 Size를 할당해야하는데, n % 2 는
n을 2로 나눈 나머지가 0이면 짝수(Even), 아니면 홀수(Odd)로 배열 사이즈를 달리했다.
그리고 반복문을 수행하여 for문 내 지역변수 i가 2로 나눈 나머지가 1이면, 홀수이기때문에
그때의 i값을 answer[j] 배열에 넣는 방법을 사용하였다. (j 변수 초기화 할 것)
ideal
import java.util.*;
class Solution {
public ArrayList solution(int n) {
ArrayList<Integer> answer = new ArrayList<Integer>();
for(int i=1; i<=n; i++){
if(i % 2 != 0) {
answer.add(i);
}
}
return answer;
}
}
ArrayList를 사용하여 배열의 크기를 가변적으로 할당할 필요가 없어졌다. why??
ArrayList는 .add .remove method를 통해 언제든지 배열의 크기를 가변적으로 키우거나 줄일 수 있는 장점이 있음 !
따라서, if( i % 2 != 0) 즉, 나머지가 1이면(홀수이면) .add만 하면 된다