알고리즘 노트
-
[프로그래머스] 배열 만들기 5알고리즘 노트 2023. 10. 18. 10:01
문자열을 잘라내 정수로 변경하여 k값과 비교 후 int 배열로 반환해주면 되는 문제입니다. [문제풀이] 1. IntStream의 range() 함수를 활용하여 loop를 구현합니다. 2. filter()를 통해 잘라낸 String Value를 Integer로 변환한 다음 k값과 대소비교를 하여 큰지 확인합니다. 3. 크다면 다시 그 잘라낸 String Value를 Integer로 변환하여 map()을 통해 모읍니다. 4. toArray()로 int 배열로 리턴해줍니다.
-
[프로그래머스] 9로 나눈 나머지알고리즘 노트 2023. 10. 17. 11:25
이 문제는 결국 모든 String을 하나씩 더하고 9로 나눈 값을 구하라는 뜻과 같습니다. 즉, String을 char형으로 변경한 후 loop를 돌며 더한 값을 9로 나누라는 것이죠. [문제풀이] 1. IntStream의 range()함수를 사용하여 number 문자열의 길이만큼 loop를 구현합니다. 2. mapToLong타입으로 문자열을 숫자로 변환해줍니다. 3. sum()을 통해 구해진 Long값을 더한 후 9로 나누어 나머지를 정수형으로 반환해줍니다. 이렇게 풀어도 사실 다르지는 않습니다만, String을 Long으로 바꾸고 다시 Long을 int형으로 바꾸며 캐스팅 시 데이터 유실의 위험성이 있습니다. 다른 분 코드를 참고하여 이렇게 수정해 보았습니다. [문제풀이] 1. number 문자열의 ..
-
[프로그래머스] 배열 만들기 4알고리즘 노트 2023. 10. 16. 12:41
조건이 조금 복잡하긴 하지만, 결국 i를 어디서 증가시켜주느냐를 잘 판단하면 문제 없이 해결 가능할 것 같습니다. 코드가 조금 지저분하긴 하네요.. [문제 풀이] 1. 가변 데이터를 담기 위한 List 선언 2. 주어지는 arr만큼 for문을 돌 수 있도록 선언하며 i 증감 문법은 제외 3. list가 비어있거나, list의 마지막 요소가 arr[i]보다 작으면 list에 arr[i]를 추가하고 i 증가 4. arr[i]가 list의 마지막 요소보다 크거나 같으면 마지막 요소를 제거 이전에 사용했던 Stream의 skip함수를 사용해서 마지막 요소에 손쉽게 접근할 수 있었습니다.
-
[프로그래머스] 콜라츠 수열 만들기알고리즘 노트 2023. 10. 16. 11:12
n이라는 숫자가 주어지면 그 숫자를 가지고 콜라츠(?) 수열을 만들면 된다. 콜라츠 수열이 뭔지 몰랐지만, 지문을 보고 이해했다. [문제 풀이] 1. 자유롭게 데이터를 넣기 위해 list를 생성하고 n을 초기값으로 넣어준다. 2. n이 1이 아니면 반복문을 계속 시행한다. 3. n이 짝수이면 n을 2로 나누어 list에 추가한다. 4. n이 홀수이면 n을 3을 곱한 후 1을 더하여 list에 추가한다. 5. 반복문이 완료된 list는 다시 int형으로 형변환하여 Array로 반환한다.