나는 코딩테스트 문제를 풀고 꼭 다른 사람의 풀이를 보며 내 풀이와 비교해본다.
그리고 아!!! 싶은 것들은 기록을 꼭 해두는 편!
이 포스팅은 코딩테스트 연습을 시작한지 일주일도 안됐을 병아리 시절에
(지금으로부터 약 한달전)(물론 지금도 병아리이긴 함)
기록해놨던 건데 출간을 안해놨길래 늦게라도 정리해본다.
지금봐도 아!싶긴 하다. 아직 Stream을 잘 활용하지 못해서...ㅎㅎ
프로그래머스 다른 풀이들을 보다보면 스트림을 활용하는 경우가 많이 보이는데
완전 병아리 수준인 내가 보기엔 아직 뭔지도 모르겠고 이해하기 힘든게 많다.
하지만 이번엔 나도 충분히 활용가능해보이고, 보기에도 깔끔해서 가져와봤다.
풀이를 보며 어떤 문법을 활용한건지 같이 정리하려 한다.
혹시 잘못된 정보가 있다면 댓글로 알려주세요! 피드백은 사랑입니다😊
문제 링크←
정수n
이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록solution 함수
를 완성해주세요.
- 제한사항
: 1 ≤n
≤ 100- 입출력 예시
1) 입력:n= 10
출력:[1, 3, 5, 7, 9]
2) 입력:n= 15
출력:[1, 3, 5, 7, 9, 11, 13, 15]
코딩테스트를 거의 처음 시작할 때라 20분 걸려서 해결했던 코드.
그래도 지금은 이 정도 문제는 바로 해결 가능!👍
import java.util.ArrayList;
class Solution {
public ArrayList<Integer> solution(int num) {
ArrayList<Integer> answer = new ArrayList<>();
for (int i = 0; i < num; i++) {
if ((i + 1) % 2 != 0) answer.add(i + 1);
}
return answer;
}
}
다른 사람들의 풀이 링크 => 문제를 해결한 사람만 그냥 볼 수 있고,
문제 해결하지 않은 상태에서 보면 무슨 점수(?)가 깎인다고 합니다!
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n)
.filter(e -> e % 2 != 0)
.toArray();
}
}
IntStream.range
가 있다.이렇게 풀이를 하나씩 뜯어봤는데, 스트림을 잘 모르는 내가 봐도
가독성이 좋다고 느낀 풀이였다.
물론 문제가 어려운 문제가 아니라서 그런 것일 수 있지만
다른 분들 풀이에 스트림 나오면난 모르는거...
이러고 넘긴 적도 많은데
스트림에 한발짝 다가가게 해준 풀이다!!!이렇게 내가 푼 방법과 다른 풀이를 통해 배우는 것 너무 재밌어 👍