본문 바로가기
반응형

Language/알고리즘 문제풀이37

프로그래머스 폰켓몬(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 폰켓몬 언어 : 자바(Java) int nums 배열을 받는데 여기서 다른 값을 최대 몇 종류까지 가져올 수 있냐는 얘기다 종류의 한계는 nums.length / 2를 해주면 간단히 가져올 수 있다 내 풀이방법은 아래와 같은데 먼저 set에 nums 배열을 다 담아주는데 set은 중복을 허용하지 않기 때문에 동일한 값을 넣을 경우 하나만 들어간다 즉 최대 종류를 파악하는 문제기 때문에 중복 값은 필요가 없다는 얘기다 이후 set.size가 nums.length를 절반으로 나눈 값보다 크다면 절반만 반환할 수 있으므로 nums.length / 2를 반환하고 그렇지 않을 경우 모두 반환이 가능하므로 answer를 set.size로 한 뒤 반환하면 된.. 2019. 9. 29.
프로그래머스 예산(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 예산 언어 : 자바(Java) 문제를 잘못 이해해서 한참 고민했는데 막상 보니까 문제 설명에 비해 핵심이 단순했다 예산 안의 범위에서 최대 몇개의 부서(d)를 지원해 줄 수 있냐는 문제였는데 budget을 반드시 다 써야된다는 게 아니라 budget 안에서 최대 몇개의 d 배열의 값을 소모할 수 있냐는 말이다 내 풀이방법은 아래와 같은데 먼저 배열을 오름차순으로 정렬시켜 주는데 이러면 작은 값이 앞에, 큰 값이 뒤에 위치하게 된다 for문을 돌리면서 answer에 배열 값을 계속 더해주는데 여기서 answer의 값이 budget보다 커지게 된다면 for문을 돌린 횟수를 넣고 반환한다 for문이 끝나도록 budget의 값을 넘기지 않았다면 돌린 횟.. 2019. 9. 24.
프로그래머스 x만큼 간격이 있는 n개의 숫자(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : x만큼 간격이 있는 n개의 숫자 언어 : 자바(Java) x와 n을 받아서 x를 1부터 n까지 곱한 값을 배열에 쫙 넣으면 되는 문제인데 보면 간단해 보이겠지만 아마 문제 풀다가 마지막 2개의 테스트에서 막히는 경우가 좀 있을텐데 내 풀이방법은 아래와 같다 보면 그냥 n의 크기로 배열을 만든 뒤 x를 1부터 곱해가면서 answer 배열에 착착 넣어주면 될 것 같은데 마지막 두 테스트에서 틀리는 이유가 값을 long 처리해서 넣어주지 않아서 그런 경우가 많을텐데 왜 마지막 두 테스트에서 틀리냐면 int 값의 범위를 넘어서는 경우에 처리를 못해줘서 틀려서 그렇다 여기서 long으로 처리를 해 주면 범위를 넘어서는 경우가 나오지 않고 해결 가능하다 마.. 2019. 9. 24.
프로그래머스 행렬의 덧셈(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 행렬의 덧셈 언어 : 자바(Java) 행렬의 덧셈 문제는 2차원 배열 두개를 받아서 배열의 동일한 행과 열끼리 더한 값을 반환하라는 것이다 두 배열의 행과 열은 항상 같기 때문에 더할 방법만 생각해내면 된다 내 풀이방법은 아래와 같은데 for 문을 두번 돌리는데 for 문 하나는 행, for 문 하나는 열 개념이다 두 배열의 행[0]열[0] 행[0]열[1] 을 더하고 행이 올라가야 하는 만큼 열을 증가시킬 때 answer 배열에 답을 넣어주는 것이다 이후 배열의 크기에 맞춰 반복문을 쭉 돌려주면 끝이 난다 마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 class Solution { public int[][] solution(int.. 2019. 9. 24.
프로그래머스 점프와 순간 이동(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 점프와 순간 이동 언어 : 자바(Java) 문제를 요약하자면 N숫자를 받아서 그냥 한칸 움직이면 배터리를 1 쓰고 순간 이동을 하면 현재 값에서 *2를 하고 배터리를 쓰지 않는다 내 풀이방법은 아래와 같은데 문제를 역발상으로 해서 풀었는데 채워서 n을 만드는 게 아니라 n에서 나누고 빼가면서 풀었다 먼저 순간이동은 배터리를 소모하지 않고 2배로 이동하니까 N을 2로 나눠서 나눠지면 계속 나누고 나머지값이 나오면 -1을 시킨뒤 배터리에 해당하는 ans 값을 증가시킨다 이후 나눠지면 나누고 안되면 빼고 이런 식으로 0이 될 때까지 진행하면 간단하고 배터리 소모량을 알 수 있다 마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다 import.. 2019. 9. 23.
프로그래머스 다음 큰 숫자(Java) 사이트명 : 프로그래머스(Programmers) 문제명 : 다음 큰 숫자 언어 : 자바(Java) 다음 큰 숫자의 포인트는 숫자를 2진수로 바꾼 뒤에 n보다 크면서 2진수로 변환했을 때 1의 갯수는 동일한 값을 찾아야 한다는 것이다 그리고 n보다 크면서도 다음으로 큰 수를 찾아야 한다 내 풀이방법은 아래와 같은데 먼저 n을 2진수로 변환해서 1의 갯수를 세는데 2진수 변환은 Integer.toBinaryString(값) 으로 가능하고 1의 갯수는 toBinaryString을 사용해서 String 타입으로 바뀐 값을 한글자씩 자른 뒤 .equals("1")로 세주면 된다 이후 n에서 수를 계속 높여가면서 1의 갯수를 계속 세보는데 n과 1의 갯수가 동일하다면 바로 break 시키고 값을 반환한다 마지막으로.. 2019. 9. 23.

반응형