ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9/20 TIL [프로그래머스 코딩테스트] 4문제
    프로그래밍/코딩테스트연습 2023. 9. 20. 16:24

    배열 뒤집기

    하나의 배열(answer)은 인덱스가 순차적으로 올라가며

    파라미터로 들어오는 num_list는 인덱스를 역순으로 넣어주었다.

    class Solution {
        public int[] solution(int[] num_list) {
            int[] answer = new int[num_list.length];
    
            for(int i=0; i<num_list.length; i++){
                answer[i]=num_list[num_list.length-1-i];
            }
            return answer;
        }
    }

    이 문제는 코드가 간결해서 만족스럽다.

     

     

    다른사람의 풀이

    import java.util.Collections;
    import java.util.List;
    import java.util.stream.Collectors;
    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] numList) {
            List<Integer> list = Arrays.stream(numList).boxed().collect(Collectors.toList());
    
            Collections.reverse(list);
            return list.stream().mapToInt(Integer::intValue).toArray();
        }
    }

     

     

     

    배열 두배 만들기

    class Solution {
        public int[] solution(int[] numbers) {
            int[] answer = new int[numbers.length];
    
            for(int i =0; i<numbers.length; i++){
                answer[i]=numbers[i]*2;
            }
    
            return answer;
        }
    }

    딱히 설명할게 없는 난이도다.

     

     

     

    짝수 홀수 개수

    파라미터의 num_list배열을 반복문과 배열을 통해

    짝수일 경우 even을 증가시키고, 홀수일 경우 odd를 증가시킴

    그 후 odd, even을 answer 배열에 넣는다 

    class Solution {
        public int[] solution(int[] num_list) {
            int[] answer = new int[2];
            int even=0;
            int odd=0;
    
            for(int i=0; i<num_list.length; i++){
                if(num_list[i]%2==0){
                    even++;
                }else odd++;
    
            }
            answer[0]=even;
            answer[1]=odd;
            return answer;
        }
    }

     

     

    다른 사람의 풀이1

    class Solution {
        public int[] solution(int[] num_list) {
            int[] answer = new int[2];
    
            for(int i = 0; i < num_list.length; i++)
                answer[num_list[i] % 2]++;
    
            return answer;
        }
    }

    내 코드가 저렇게 요약이 가능했다

     

     

    다른 사람의 풀이2

    import java.util.stream.IntStream;
    import java.util.Arrays;
    
    class Solution {
        public int[] solution(int[] numList) {
            return IntStream.of((int) Arrays.stream(numList).filter(i -> i % 2 == 0).count(), (int) Arrays.stream(numList).filter(i -> i % 2 == 1).count()).toArray();
        }
    }

    스트림 다시보기

     

     

     

    피자 나눠먹기(1)

    • i는 피자 수
    • n은 인원수
    • 판당 7조각이니  7*i  즉 조각수가 사람 수보다 많은 경우 1보다 작은값이 나오게 된다.
    • 그것을 반복문으로 표현
    • 피자가 15판까지인 이유는 제한조건에서 인원수를 1~100까지로 두었기 때문
    class Solution {
        public int solution(int n) {
            int answer = 0;
            double i= 1;
    
            for(; i<=15; i++){
               if((n/(7*i))<=1){
                answer=(int)i;      
                 break;
            }
            }
    
            return answer;
        }
    }

     

    다른 사람의 풀이

    class Solution {
        public int solution(int n) {
            return (n + 6) / 7;
        }
    }

    ...

     

Designed by Tistory.