반응형

Level 1 49

[프로그래머스] 나머지가 1이 되는 수 찾기 - JAVA

프로그래머스 나머지가 1이 되는 수 찾기 - JAVA 문제 설명 자연수 n이 매개변수로 주어진다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return. 제한 사항 3 ≤ n ≤ 1,000,000 문제 풀이 가장 작은 x을 찾는 것이므로 i = 2부터 n까지 반복하며 증가, 나머지가 1이 되면 return. n % n - 1은 무조건 나머지가 1이므로 for문에서 항상 1이 되는 수를 찾을 수 있음. 소스 코드 class Solution { public int solution(int n) { for (int i = 2; i < n; i++) { if (n % i == 1) { return i; } } return -1; } }

[프로그래머스] 최소직사각형 - JAVA

프로그래머스 최소직사각형 - JAVA 문제 설명 다양한 모양과 크기의 명합들을 모두 수납할 수 있으면서, 가장 작은 명합 지갑을 만들려 한다. 모든 명합의 가로 길이와 세로 길이를 나타내는 2차원 배열 sizes가 배개변수로 주어진다. 모든 명합을 수납할 수 있는 가장 작은 지갑을 만들 때, 지갑의 크기를 return. 제한 사항 sizes의 길이는 1 이상 10,000 이하입니다. sizes의 원소는 [w, h] 형식입니다. w는 명함의 가로 길이를 나타냅니다. h는 명함의 세로 길이를 나타냅니다. w와 h는 1 이상 1,000 이하인 자연수입니다. 문제 풀이 주어진 명함을 눕힐 수 있으므로, 주어진 가로, 세로 중 긴것과, 짧은 것을 구한다. 구한 길이를 편이상 긴 쪽을 가로, 짧은 쪽을 세로로 저장..

[프로그래머스] 2016년 - JAVA

프로그래머스 2016년 - JAVA 문제 설명 2016년 1월 1일은 금요일이다. 두 수 a, b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 이다. 제한 사항 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 문제풀이 1월 1일이 금요일 이므로, 금요일부터 시작하여 요일 이름을 저장. 모든 날짜를 더해 % 7로 나눠준다. 배열은 0부터 시작이므로 a - 1까지 모든 월의 일수를 더한다. b - 1을 더함으로 1월 1일부터 a월 b일까지 모든 날짜를 더한 값을 얻는다. 소스 코드 class Solution { public..

[프로그래머스] 두 개 뽑아서 더하기 - JAVA

프로그래머스 두 개 뽑아서 더하기 - JAVA 문제 설명 정수 배열 numbers가 주어진다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return. 제한 사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 문제 풀이 배열을 2중 for문으로 순회하며 만들 수 있는 모든 수를 저장 중복이 발생할 수 있으므로 HashSet을 사용하여 저장. 1에서 찾은 모든 수를 정렬. HashSet은 정렬이 불가능하여 ArrayList로 복사하여 정렬. ArrayList의 수들을 배열에 담아 return. 소스 코드 import java.util.*; class Solution { ..

[프로그래머스] 크레인 인형뽑기 게임 - JAVA

프로그래머스 크레인 인형뽑기 게임 - JAVA 문제 설명 게임 화면은 N x N 크기의 정사각 격자이먀 위쪽에는 크레인이 있고 오른쪽에 바구니가 있다. 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸이다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올려 바구니에 쌓는다. 바구니에 같은 모양의 인형 두 개가 연속해서 쌓이게 되면 사라진다. 터트려서 사라진 인형의 개수를 return. 제한 사항 board 배열은 2차원 배열로 크기는 "5 x 5" 이상 "30 x 30" 이하입니다. board의 각 칸에는 0 이상 100 이하인 정수가 담겨있습니다. 0은 빈 칸을 나타냅니다. 1 ~ 100의 각 숫자는 각기 다른 인형의 모양을 의미하며 같은 숫자는 같..

[프로그래머스] 3진법 뒤집기 - JAVA

프로그래머스 3진법 뒤집기 - JAVA 문제 설명 자연수 n이 매개변수로 주어진다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. 문제 풀이 주어진 n을 3진법으로 변환 n % 3을 n이 0이 되기전까지 n / 3을 하며 반복함으로 3진법으로 변환할 수 있음. 변환한 3진법 수를 앞뒤로 뒤집는다. 다시 10진법으로 변환하는 return. 반전된 3진법 수의 뒷자리부터 3^i을 곱함으로 10진법으로 변환할 수 있음. 소스 코드 import java.util.*; class Solution { public int solution(int n) { int answer = 0; List list = ne..

[프로그래머스] 약수의 개수와 덧셈 - JAVA

프로그래머스 약수의 개수와 덧셈 - JAVA 문제 설명 두 정수 left와 right가 매개변수로 주어진다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 retrun. 제한 사항 1 ≤ left ≤ right ≤ 1,000 문제 풀이 left부터 right까지 for문으로 순회. 약수의 개수가 홀수인 경우는 제곱 수인 경우이므로 그 경우 빼고, 아닌 경우 더한다. 소스 코드 class Solution { public int solution(int left, int right) { int answer = 0; for (int i = left; i

[프로그래머스] 폰켓몬 - JAVA

프로그래머스 폰켓몬 - JAVA 문제 설명 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2 마리를 가져간다. 폰켓몬은 종류에 따라 번호를 붙여 구분. 같은 종류의 폰켓몬은 같은 번호를 가진다. 최대한 많은 종류의 폰켓몬을 포함해서 N/2 마리를 선택. 가장 많은 종류의 폰켓몬을 선택하는 방법을 찾아, 그때의 폰켓몬 종류 번호의 개수를 return. 제한 사항 nums는 폰켓몬의 종류 번호가 담긴 1차원 배열입니다. nums의 길이(N)는 1 이상 10,000 이하의 자연수이며, 항상 짝수로 주어집니다. 폰켓몬의 종류 번호는 1 이상 200,000 이하의 자연수로 나타냅니다. 가장 많은 종류의 폰켓몬을 선택하는 방법이 여러 가지인 경우에도, 선택할 수 있는 폰켓몬 종류 개수의 최댓값 하나만 return ..

[프로그래머스] 체육복 - JAVA

프로그래머스 체육복 - JAVA 문제 설명 도둑이 들어, 일부 학생이 체육복을 도난당했음. 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려준다. 학생들의 번호는 체격순으로 매겨저 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어진다. 체육수업을 들을 수 있는 학생의 최대값을 return. 제한 사항 전체 학생의 수는 2명 이상 30명 이하입니다. 체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다. 여벌의 체육복을 가져온 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다. ..

[프로그래머스] 내적 - JAVA

프로그래머스 내적 - JAVA 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어진다. a와 b의 내적을 return. a와 b의 내적은 a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1]이다. 제한 사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,000 이상 1,000 이하입니다. 소스 코드 class Solution { public int solution(int[] a, int[] b) { int answer = 0; for(int i = 0; i < a.length; i++) { answer += a[i] * b[i]; } return answer; } }

반응형