41. 공 던지기
class Solution {
public int solution(int[] numbers, int k) {
int answer = 1;
for(int i=1; i<k; i++){
answer+=2;
if(answer>numbers.length) answer -= numbers.length;
}
return answer;
}
}
<작성한 코드>
던지는 사람은 1번째부터 시작하기 때문에 answer을 1로 초기화해 주었다.
42. 배열 회전시키기
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if(direction.equals("right")){
for(int i=0; i<numbers.length - 1; i++){
answer[i+1] = numbers[i];
}
answer[0] = numbers[numbers.length - 1];
}
else if(direction.equals("left")){
for(int i=0; i<numbers.length - 1; i++){
answer[i] = numbers[i+1];
}
answer[numbers.length - 1] = numbers[0];
}
return answer;
}
}
<작성한 코드>
direction이 right, left 둘 중 하나만 나온 다했으니 조건을 두 개로 나눠서 걸었다. 후에 right일 때는 0부터 길이의-1만큼 반복해 주었다. 오른쪽이든 왼쪽이든 첫 번째 값과 마지막값은 따로 설정해줘야 했기 때문이다. 그 후 차례대로 대입해 준 뒤 right면 첫 번째 배열값을 left면 마지막 배열값을 초기화해 주었다.
43. 주사위의 개수
class Solution {
public int solution(int[] box, int n) {
int answer = 1;
for(int i=0; i<box.length; i++){
answer *= box[i] / n;
}
return answer;
}
}
<작성한 코드>
몇 개가 들어갈 수 있는지 생각해 봤다. 가로, 세로, 높이 각각에 나누기 n만큼 해줘서 몫끼리 전부 곱해주면 들어갈 수 있는 개수가 나왔다. 따라서 for문으로 배열의 길이만큼 반복시키고 answer값에 가로, 세로, 높이를 n으로 나눠진 것을 차례로 곱해줬다.
44. 합성수 찾기
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++){
if(truefalse(i))answer ++;
}
return answer;
}
public boolean truefalse(int num){
int cnt = 0;
for(int i=1; i<=num; i++){
if(num%i == 0) cnt++;
}
if(cnt >= 3) return true;
else return false;
}
}
<작성한 코드>
true/false를 반환하는 truefalse 메서드를 만들어주고 1부터 n번까지 반복해서 실행시켜 주었다. truefalse 안에서는 i를 1부터 n번까지 반복하면서 나머지가 0일 때 즉 약수로 확인되면 cnt을 1씩 추가해 줘서 넘겨받은 num의 약수개수를 구한다. 그리고 cnt가 3 이상이면 true, 미만이면 false를 반환시켰다.
45. 최댓값 만들기(1)
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int max = 0;
int max2 = 0;
for(int i=0; i<numbers.length; i++){
if(numbers[i] >= max){
max2 = max;
max = numbers[i];
} else if(numbers[i] > max2){
max2 = numbers[i];
}
}
answer = max * max2;
return answer;
}
}
<작성한 코드>
max가 제일 큰 수 max2가 두 번째로 큰 수로 구해주었다. 반복문으로 0부터 numbers의 길이까지 반복시켜 준다. 내부에서는 만약 각원소 중 max보다 크거나 같은 게 발견된다면 max2에 현재 max값을 넣어주고 max에는 발견한 값을 넣어준다. 그리고 원소의 값 중 max2보다 큰 게 있으면 max2에 그 값을 대입해 준다. 두 개를 곱해준 후 반환해 주었다.
46. 팩토리얼
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1; i<=n; i++){
if(factorial(i) <= n){
answer = i;
} else{
break;
}
}
return answer;
}
public int factorial(int n){
int result = 1;
for(int i=1; i<=n; i++){
result *=i;
}
return result;
}
}
<작성한 코드>
factorial역할을 할 메서드 하나를 만들어주었다. 그 후 for문으로 i는 1부터 n번까지 반복되게 했고 만약 제공받은 n보다 작을 때 answer를 계속 초기화시켰다. 결국 마지막에 answer에 담기는 것은 문제에서 요구하는 답이랑 일치한다.
47. 모음제거
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0; i<my_string.length(); i++){
if(my_string.charAt(i) == 'a') continue;
if(my_string.charAt(i) == 'e') continue;
if(my_string.charAt(i) == 'i') continue;
if(my_string.charAt(i) == 'o') continue;
if(my_string.charAt(i) == 'u') continue;
answer += my_string.charAt(i);
}
return answer;
}
}
<작성한 코드>
for문으로 원소의 길이만큼 반복되게 하였다. 안에는 if문으로 a, e, i, o, u 중 하나가 나오면 처음으로 돌아가도록 하였고, 걸리지 않으면 answer에 추가해서 반환하였다.
48. 문자열 정렬하기(1)
import java.util.*;
class Solution {
public int[] solution(String my_string) {
int[] answer = {};
ArrayList<Integer> list = new ArrayList<>();
for(int i=0; i<my_string.length(); i++){
if(my_string.charAt(i) >= '0' && my_string.charAt(i) <= '9'){
list.add(my_string.charAt(i) - '0');
}
}
answer = new int[list.size()];
for(int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
Arrays.sort(answer);
return answer;
}
}
<작성한 코드>
문장에서 수만 꺼내담을 list를 하나 만들었다. 그 후 for문으로 0부터 my_string의 길이만큼 반복해 주고 내부에서 조건문을 걸었다. 각 원소가 0에서 9 사이면 list에 하나씩 추가해 줬다. char형으로 나올 거기 때문에 -'0'을 해주어서 본래 숫자로 맞췄다. list가 만들어졌으면 기존의 answer 배열의 길이를 초기화해 주고 list에서 한 개씩 꺼내서 담아주었다. 마지막으로. sort를 사용해서 answer을 오름차순으로 정렬시키고 반환하였다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (56~62번 문제풀이) (0) | 2023.09.25 |
---|---|
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (49~55번 문제풀이) (0) | 2023.09.22 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (33~40번 문제풀이) (0) | 2023.09.21 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (25~32번 문제풀이) (0) | 2023.09.21 |
[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (20~24번 문제풀이) (0) | 2023.09.20 |
남건욱's 공부기록