본문 바로가기
반응형

Language/알고리즘 문제풀이37

프로그래머스 최대공약수와 최소공배수(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 최대공약수와 최소공배수 언어 : 자바(Java) 일단 최대공약수란? 두 수를 나눴을 때 (3, 12라 가정) 두 수를 같은 수로 나누었을 때 나머지가 0인 값 중에 가장 큰 수!! 그 다음으로 최소공배수란? 두 수를 계속 같은 수로 곱하다가 두 숫자의 값이 같아지는 경우!! (2와 5를 서로 *2*2*2 *5*5*5 이런 식으로 하다가 보면 10에서 같아짐) 그냥 정직하게 풀면 효율성에서 걸려서 유클리드 호제법을 사용해야 하는데 두 수를 곱한 뒤 최대공약수로 나누면 최소공배수를 구할 수 있다 즉 최대공약수를 먼저 구한 뒤 최소공배수를 구하면 된다는 것이다 내 풀이방법은 아래와 같은데 먼저 받은 두 값 중에서 큰 값을 먼저 구한 뒤에 큰 값을 가지.. 2019. 9. 11.
프로그래머스 짝수와 홀수 풀이(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 짝수와 홀수 언어 : 자바(Java) num을 받아서 짝수인지 홀수인지 판별한 후 홀수면 Odd, 짝수면 Even을 반환하는 문제인데 내 풀이는 아래와 같다 먼저 값을 받은 뒤 2로 나눠서 나머지값이 있으면 홀수고 없으면 짝수라는 말이 되니까 %2로 나눈 뒤 0이면 Even, 0이 아니라면 Odd를 넣어 반환하면 된다 2019. 9. 5.
프로그래머스 제일 작은 수 제거하기 풀이(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 제일 작은 수 제거하기 언어 : 자바(Java) 배열 arr을 받은 뒤 배열에서 가장 작은 값만 제거한 뒤에 반환해야 하는데 문제는 가장 작은 값이 항상 배열 끝 위치에 존재하는 것도 아니고 강제로 정렬해서 제거하면 순서가 바뀌게 되어 틀리기 때문에 주어진 배열에서 어떻게 가장 작은 수만 잘라내고 반환하냐는 것이 문제다 내가 푼 방법은 아래와 같은데 먼저 list 안에 배열 값을 모두 넣어준 뒤 list의 사이즈가 1이 아니라면 list.remove(Collection.min(list)) 로 리스트 안의 최소값을 지워준다 이후 이 리스트의 사이즈로 반환할 answer 배열의 크기를 지정해 주고 반복문을 돌려가며 list 값을 모두 answer 배.. 2019. 9. 5.
프로그래머스 정수 제곱근 판별 풀이(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 정수 제곱근 판별 언어 : 자바(Java) 정수 제곱근 판별 문제는 받은 n 숫자가 특정 숫자의 제곱인지 확인하고 제곱일 경우에는 n+1 숫자의 제곱을 구한 뒤 반환하면 되고 특정 숫자의 제곱이 아니라면 -1를 넣어 반환하면 된다 내 풀이방법은 아래와 같은데 먼저 정직하게 for 문을 돌려가며 n 값이 특정 수의 제곱인가를 판별하면 시간제한에 걸려서 망한다 Math.sqrt(값) 을 사용하면 무슨 값을 제곱했을 시 값이 나오게 되는지를 반환하는데 여기에 +1을 해 주고 (long) 타입으로 변환해주면 실제 제곱근이 몇인지 판별이 가능하다 long으로 형변환을 안해주면 판별이 불가능하므로 꼭 해줘야 한다 그래서 제곱근을 구한 뒤 제곱근끼리 한번 곱.. 2019. 9. 5.
프로그래머스 정수 내림차순으로 배치하기 풀이(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 정수 내림차순으로 배치하기 언어 : 자바(Java) n값을 받은 뒤 이걸 숫자 크기에 따라 정렬해서 반환하라는 문제인데 숫자를 하나씩 다 쪼갠 뒤에 큰 수 순서대로 깔아서 반환해줘야 한다 내가 푼 방법은 아래와 같은데 먼저 for 문을 돌리면서 n값을 String으로 변환한 뒤 1글자씩 자른 뒤 그걸 다시 int로 변환해서 list에 넣어준다 이후 Collections.sort를 사용해 역순으로 정렬해주면 큰 값이 list의 앞에 들어오고 작은 값이 끝에 들어오게 되는데 여기서 for문을 한번 더 돌려서 list 값을 다시 String 하나에 합쳐준다 역정렬을 통해 큰 수가 앞으로 가게 될 것이다 이후 String을 다시 Long 타입으로 변환한.. 2019. 9. 4.
프로그래머스 자연수 뒤집어 배열로 만들기 풀이(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 자연수 뒤집어 배열로 만들기 언어 : 자바(Java) 자연수를 뒤집은 뒤 배열에 차례대로 넣은 후 반환하라는 문제인데 포인트는 배열에 값을 거꾸로 넣는 것은 쉽지만 문제는 n 값을 어떻게 한글자씩 자르느냐는 것이다 내 풀이방법은 아래와 같은데 먼저 n값을 String.valueOf를 통해 String 형태로 바꾼 뒤 String의 length를 구해 배열의 크기를 알아내고 이후 for 문을 돌려가면서 String을 한글자씩 자른 후 Integer.parseInt로 int로 변환한 뒤 배열 역순으로 삽입해 준 뒤 반환하면 해결 가능하다 프로그래머스에 바로 적용 가능한 답안 코드는 아래와 같다 class Solution { public int[] s.. 2019. 9. 4.

반응형