보라코딩

프로그래머스 자바 (콜라츠 추측 / 수박수박수박수박수박수? / 내적) 본문

프로그래머스 (java)

프로그래머스 자바 (콜라츠 추측 / 수박수박수박수박수박수? / 내적)

new 보라 2023. 8. 26. 21:35

오랜만에 코테...

쉬운 1단계부터 다시...!

 

 

 

콜라츠 추측



1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

 

 

 

 

풀이

 

class Solution {
    public int solution(int num) {
        int answer = 0;      
        
        while(num != 1) {
if (num %2 == 0) {
num = num/2;
answer++;
} else if (num %2 == 1) {
num = num*3 + 1;
answer++;
} else {
answer++;
if (answer == 500) {
answer = -1;
break;
}
}
}
        return answer;
    }
}

 

 

 

쉬운 문제였다. 다만 다음에는 삼항연산자를 사용해보자

 

 

 


 

 

수박수박수박수박수박수?

 

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.제한 조건

  • n은 길이 10,000이하인 자연수입니다.

 

 

 

 

풀이

 

class Solution {
    public String solution(int n) {
        String answer = "";

for (int i=0; i<n; i++) {
if(i % 2 == 0) {
answer += "수";
} else {
answer += "박";
}
}
        return answer;
    }
}

 

다른사람 풀이 :: substring 사용!!
new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);

 

 

 


 

 

내적

길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요.

이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이)


제한사항

  • 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;
    }
}