본문 바로가기

프로그래머스 - 코딩테스트

(23)
[Java][프로그래머스] - LVL.0 숨어있는 숫자의 덧셈(1) 정답 1 이문제는 처음에 나한테 큰 혼란을 주었다. IntStream 은 이제 어느정도 사용하는데 익숙해졌는데 반대로 String 을 가지고 노는데에는 어려움을 느꼈다. 먼저 저 숫자들만 가져와 배열을 만드는게 우선이라 판단했고 그다음 그 배열의 요소들을 모두 int 타입으로 바꿔준다음 전부 합하면 될것이라 판단하고 아래와 같은 로직을 도출했다. import java.util.Arrays; class Solution { public int solution(String my_string) { String intStr = my_string.replaceAll("[^0-9]", ""); return Arrays.stream(intStr.split("")).mapToInt(d -> Integer.valueOf(..
[Java][프로그래머스] - LVL.0 순서쌍의 개수 정답 1 오,,, 이번 문제는 생각보다 단순하면서도 머리를 많이 굴렸던것 같다. 일딴 저렇게 두수의 쌍을 지어준다는 것 자체가 처음에는 이해가 안갔다. 하지만 역시 못해도 Go 라고! 풀다 보니 겉으론 복잡해보이지만 돌파구가 너무나도 확실한 문제였다. 일딴 입출력 예 설명을 보면 간단한 규칙이자 트릭이 눈에 띈다. 바로 주어진 숫자 n 에 순서쌍의 첫번째 숫자를 나누면 나머지가 0이라는 것이다. 규칙을 풀어 설명하면 20/1 = 몫 : 20 , 나머지 : 0 \\ 20/2 = 몫 : 10, 나머지 0 이란 규칙이 눈에 띄었다. 즉, 20%순서쌍의 첫번째 숫자 == 0 이라는 것이다. 해서 아래와 같은 답이 도출 되었다. import java.util.stream.IntStream; class Soluti..
[Java][프로그래머스] - LVL.0 중복된 숫자 개수 정답 1 이제는 딱 구상이 떠오른다. IntStream 에 filter. import java.util.stream.IntStream; class Solution { public int solution(int[] array, int n) { return IntStream.of(array).filter(d -> d == n).toArray().length; } } 정답 2 IntStream 이 아닌 Arrays 에 filter 를 사용할 수 도 있다. import java.util.Arrays; class Solution { public int solution(int[] array, int n) { return (int) Arrays.stream(array).filter(i -> i == n).count(..
[Java][프로그래머스] - LVL.0 문자 반복 출력하기 정답 1 이번 문제는 생각보다 풀이에 대한 아이디어가 잘 떠오르지 않았다. 생각보다 고전했던 문제였다. 지금 현재 나는 숫자 타입의 배열에 대해서는 어느정도 이해를 하고 문제 답안에 대한 구상을 수월하게 하지만 String, char[] 배열 관련해서는 너무나도 고전하고 있다. 해서 정답 1의 나의 답안은 상당히 처참했다. 그래도 열심히 로직을 구성해보았다. class Solution { public String solution(String my_string, int n) { char[] arr = my_string.toCharArray(); String[] answer = new String[my_string.length()]; for(int i = 0; i < my_string.length(); i+..
[Java][프로그래머스] - LVL.0 최댓값 만들기(1) 정답 1 해당 문제를 처음 딱 봤을때 들었던 생각은!! 'sort 해서 끝에 두개 요소 가져와서 곱하기 시키면 되겠다!' 이다. 하지만 그렇게 문제를 풀면 재미가 없을것 같았다. 나는 이것도 stream 을 사용해 풀어보고 싶었다. 상당히 엉뚱한 생각이지만 그만큼 익숙해지고 잘 사용하고 싶은 욕심이였다. import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int solution(int[] numbers) { Arrays.sort(numbers); int result = IntStream.of(numbers) .filter((i) -> i >= numbers[numbers.length -2]) .reduce(..
[Java][프로그래머스] - LVL.0 배열 자르기 정답 1 IntStream 에 range 를 사용해 주어진 num1, num2 인덱스 만큼의 numbers 요소를 map 을 통해 공정해준뒤 toArray() 메서드를 사용해 int[] 배열러 만들어 return 해주었다. import java.util.stream.IntStream; class Solution { public int[] solution(int[] numbers, int num1, int num2) { return IntStream.range(num1, num2+1).map(num -> numbers[num]).toArray(); } } 여기서 한가지! IntStream, LongStream 에는 range 외에 rangeClosed 라는 메서드 또한 존재한다. 상기 답안에서는 range..
[Java][프로그래머스] - LVL.0 머쓱이보다 키 큰 사람 정답 1 확실히 IntStream 에 맞들이니 이러한 문제들은 상당히 재미있게 빠르게 풀 수가 있었다. 딱 봐도 height 보다 높은 애들만 filter 처리하여 그 수만 계산해주면 될것 같다. import java.util.stream.IntStream; class Solution { public int solution(int[] array, int height) { int[] result = IntStream.of(array).filter(num -> num > height).toArray(); return result.length; } } 정답이었다. 하지만 다른사람들의 답을 확인한 후 알게된 사실인데 나는 배열을 구해서 그 배열의 length 로 처리를 했는데 IntStream 마지막에 .toA..
[Java][프로그래머스] - LVL.0 삼각형의 완성조건(1) 정답 1 해당 문제를 처음 봤을때 들었던 생각은 어렵다였다. 문제를 보면서 답을 구상하는 도중 reduce 라는 개념이 떠올랐다. JavaScript 로 주로 개발을 하다 보니 reduce 라는 개념이 떠오른 것이다. 찾아보니 IntStream 에도 reduce 라는 개념이 있었다. 그래서 적용해보기로 하였다. IntStream 을 연습해보고싶어 답을 조금 복잡하게 도출해 낸 느낌이 없지 않아 있다.. 그래도 재밌었다. import java.util.Arrays; import java.util.stream.IntStream; class Solution { public int solution(int[] sides) { Arrays.sort(sides); int result = IntStream.of(arr..