목록Java Note/Algorithmus (48)
럿고의 개발 노트
[프로그래머스] 코딩테스트 연습 콜라츠 추측 간략한 문제 풀이 콜라츠 추측의 조건에 맞춰서 조건식만 적어준다면 어렵지 않은 문제이다. 굳이 설명할 내용은 없을 것 같습니다. Stream github 문제 및 풀이 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반..
[프로그래머스] 코딩테스트 연습 최대공약수와 최소공배수 간략한 문제 풀이 최대공약수와 최소공배수를 구하는 문제로, BigInteger라는 클래스를 처음 써보게 되었네요. 저는 알고리즘 문제를 푸는 첫번째 이유는 자바라는 언어에 익숙해지고, 새로운 메소드들을 배워가면서 익숙해지기 위함이라 알고리즘적으로 푸는 것보다는 API 메소드를 이용해서 풀려고 많이 노력을 하고 있습니다. 그래서 알고리즘 문제를 풀어도, 글을 보시는 분들과는 생각이 조금 다를 수 있습니다....ㅎㅎ BigInteger Class BigInteger Java API 12 BigInteger Class는 long타입보다 큰 자료형으로 범위는 무한대이다. 자바 API에서는 Immutable arbitrary-precision integers..
[프로그래머스] 코딩테스트 연습 짝수와 홀수 간략한 문제 풀이 3항 연산자로 if문만 아신다면 손쉽게 풀수 있습니다. 짝수 홀수는 if문 예제 중 가장 먼저 하는 문제입니다! github 문제 및 풀이 문제 설명 정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 Odd 4 Even /** * @ClassName : EvenOrOdd * @ProblemName : 짝수와 홀수 * @URL : https://programmers.co.kr/learn/courses/30/lessons/12937 */ public class EvenOrOdd { p..
[프로그래머스] 코딩테스트 연습 제일 작은 수 제거하기 간략한 문제 풀이 List를 이용하여 값을 제거하였으며, Stream을 이용해서 최소값을 구했습니다. Stream은 코드가 간결(?)해지긴 하지만, 속도문제에서는 확실히 너무 떨어지네요... 배열내에서 최소값을 구하고 특히 제거하는 것이 쉬운 편이 아니여서 조금 어려웠던 문제였던 것 같습니다. github 문제 및 풀이 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 ..
[프로그래머스] 코딩테스트 연습 정수 제곱근 판별 간략한 문제 풀이 수학적인 알고리즘을 생각하신다면 어렵지 않게 풀수 있었습니다. Math클래스의 메소드들 중 sqrt()와 pow()를 이해 할 수 있도록 하는 문제 중에 가장 좋은 문제가 아니였나 생각합니다. Math.sqrt() 양의 제곱근을 반환합니다. (리턴타입은 double) Math.pow() 첫 번째 인수의 값을 두 번째 인수의 거듭 제곱으로 리턴합니다. github 문제 및 풀이 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 500..
[프로그래머스] 코딩테스트 연습 정수 내림차순으로 배치하기 간략한 문제 풀이 문자열 내림차순으로 배치하기와 전혀 다를바 없는 문제였다. 정수형타입을 문자형타입으로 변경한 후에 똑같히 진행하면 되는 부분이었습니다. 다른 사람 풀이 보면서, 간단히 메소드와 람다를 써서 끝낸 것이 있던데, 부럽네요 ㅎㅎ String res = ""; Integer.toString(n).chars().sorted().forEach(c -> res = Character.valueOf((char)c) + res); return Integer.parseInt(res); github 문제 및 풀이 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주..
[프로그래머스] 코딩테스트 연습 자연수 뒤집어 배열로 만들기 간략한 문제 풀이 StringBuffer를 사용하여, reverse메소드를 이용하여 뒤집었다. 처음에는 연산으로 풀려고 하는데, 아직 수학적인 알고리즘 생각은 부족한듯 하다..ㅠㅠㅠ(엄청나게 간단한 것 같은데...) Collection.reverse()는 문자열 내림차순으로 배치하기 에서 사용했었으나, 이번에는 StringBuffer의 reverse도 사용하니, reverse 메소드를 외우게 된 것 같다. Github 문제 및 풀이 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. ..
[프로그래머스] 코딩테스트 연습 자리수 더하기 간략한 문제 풀이 어렵지 않았던 문제로, 저와 같이 각 자릿수를 나눠서 배열에 넣는 방법과 10을 나눠서 몫을 다음 값으로 남겨두고, 나머지는 자릿수 값일테니깐, 그걸 더하는 방법도 있습니다. 사실, 두번째 방법이 리소스 면에서는 더 좋을 것 같습니다. 왜냐하면 String배열을 만들기도 하며, 메소드까지 써야 되는 상황이기 때문에, 단순 연산으로 끝나는거에 비해 더 리소스 면에서는 좋을 것 같습니다. github 문제 및 풀이 문제 설명 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,..
[프로그래머스] 코딩테스트 연습 이상한 문자 만들기 간략한 문제 풀이 처음에는 쉬워보여서 쉽게 풀 수 있다고 생각했는데, 제한 사항에는 없지만 공백이 연속으로 나올 수 있는 상황이 있을 수도 있었습니다. 처음에 split()를 사용했더니, 그런 부분들에 대해서는 체크를 못하기 때문에 100점이 나오지 않았습니다. 그래서 문자별대로 나눠서 따로 단어 길이를 측정해서 변경하였습니다. 조건식을 적는 것이 처음하시는 분들은 조금 까다로울 수도 있지만, 알고리즘 입문자에게는 적당한 난이도가 아닐까 생각합니다. character를 사용하다보니, 아스키 코드를 사용했어야 합니다. String.valueOf() github 문제 및 풀이 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 ..