
โค๏ธ๋ฌธ์
ํจ์ solution์ ์ ์ n์ ๋งค๊ฐ๋ณ์๋ก ์
๋ ฅ๋ฐ์, n์ ๊ฐ ์๋ฆฟ์๋ฅผ ํฐ๊ฒ๋ถํฐ ์์ ์์ผ๋ก ์ ๋ ฌํ ์๋ก์ด ์ ์๋ฅผ ๋ฆฌํดํด์ฃผ์ธ์. ์๋ฅผ๋ค์ด n์ด 118372๋ฉด 873211์ ๋ฆฌํดํ๋ฉด ๋ฉ๋๋ค.
๐ํ์ด
// 1. ์ ์๋ฅผ string์ผ๋ก ๋ณํ ํ string ๋ฐฐ์ด๋ก ์ ์ฅํ๊ธฐ
public static long solution(long n){
long answer = 0;
String result="";
//1. long ์ ์คํธ๋ง์ผ๋ก ๋ณํ ํ์ฌ ๋ฐฐ์ด๋ก ์ ์ฅ
String[] strNum = String.valueOf(n).split("");
Arrays.sort(strNum);
for(int i=strNum.length-1; i>=0; i--){
result += strNum[i];
}
return Long.parseLong(result);
}
// 2. ์ ์๋ฅผ ์ชผ๊ฐ์ ๋ฆฌ์คํธ์ ์ ์ฅํ๊ธฐ
public static long solution2(long n) {
// ์๋์ธก๋ฉด์์ ํจ์ฌ ๋น ๋ฆ
// 1. while % -> ๊ฐ ์๋ฆฌ์๋ฅผ
// 2. LongStream ์ผ๋ก .char
// 3. String -> int -> Arr -> sort
List<Long> arr = new ArrayList<Long>();
while (n > 0) {
Long digit = n % 10;
n /= 10;
arr.add(digit);
}
// Collections.reverse(arr);
Collections.sort(arr, Collections.reverseOrder());
long answer = 0;
for(int i =0; i<arr.size(); i++){
answer = (answer * 10) + arr.get(i) ; // ์ธ๋ฑ์ค ๊ฐ ํ๋์ฉ ๊ฐ์ ธ์ด
}
return answer;
}
๐์๋ก ์๊ฒ ๋ ์
- List์ ์ ๋ ฌ์ธ Collection.sort ์ฌ์ฉ๋ฒ์ Arrays.sort์ ๋์ผํ๋ค.
- ๋๊ฐ์ ์ฝ๋๋ฅผ ๋ชจ๋ ๋๋ ค๋ดค์ ๋ ๊ฒฐ๊ณผ๋ ๋์ผํ์ง๋ง ๋ณํ๊ณผ์ ์ด ์ค์ด๋ค์ด์์ธ์ง Long list์ ๋ด์์ sort ํ๊ฒ ํจ์ฌ ๋น ๋ฅธ๊ฑธ ํ์ธ ํ ์ ์์๋ค.
๐๋ค๋ฅธ ํ์ด
//์ฒซ ๋ฒ์งธ ์ฝ๋๋ฅผ ๊ฐ์ ์ํจ ์ ์๋ ๋ฐฉ๋ฒ ( 1+ 2๊ฐ ํฉ์ณ์ ธ์ List๊ฐ ์๋ ๋ฐฐ์ด์ ๊ฐ์ ์ ์ฅํ์๋ค.)
public static long solution(long n){
// ๊ฐ ์๋ฆฟ์๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ ์ง์ ์ ๋ ฌํ์ฌ ๊ฒฐ๊ณผ ๊ณ์ฐ
String[] strNum = String.valueOf(n).split("");
int len = strNum.length;
int[] intArray = new int[len];
for (int i = 0; i < len; i++) {
intArray[i] = Integer.parseInt(strNum[i]);
}
Arrays.sort(intArray);
long answer = 0;
for (int i = len - 1; i >= 0; i--) {
answer = answer * 10 + intArray[i];
}
return answer;
}
โค๏ธ๋ฌธ์
์์ ์ ์ x๊ฐ ํ์ค๋ ์์ด๋ ค๋ฉด x์ ์๋ฆฟ์์ ํฉ์ผ๋ก x๊ฐ ๋๋์ด์ ธ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด 18์ ์๋ฆฟ์ ํฉ์ 1+8=9์ด๊ณ , 18์ 9๋ก ๋๋์ด ๋จ์ด์ง๋ฏ๋ก 18์ ํ์ค๋ ์์
๋๋ค. ์์ฐ์ x๋ฅผ ์
๋ ฅ๋ฐ์ x๊ฐ ํ์ค๋ ์์ธ์ง ์๋์ง ๊ฒ์ฌํ๋ ํจ์๋ฅผ ์์ฑ
๐ํ์ด
public static boolean solution(int x) {
int originNum = x;
int sum = 0;
while ( x > 0 ) {
sum += x % 10; // sum์ ๋๋จธ์ง ์ ์ฅ x๊ฐ 998 ์ด๋ผ๋ฉด 8 ์ ์ฅ
x = x / 10; // x / 10 ํจ x๊ฐ 998 ์ด์๋ค๋ฉด x = 99
}
return originNum % sum == 0 ? true : false;
}
๐์๋ก ์๊ฒ ๋ ์
//GPT๊ฐ ์๋ ค์คฌ๋๋ฐ return ๋ถ๋ถ์์ ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง์๊ณ ๋ฐ๋ก ์กฐ๊ฑด์์ ์ฌ์ฉํด ์ค๋ ๋๋ค๊ณ ํ๋ค.
//์๊ฐํด๋ณด๋ true ์ผ๋ true๋ฅผ ๋ฐํํด์ฃผ๋ ๊ฑฐ๋ฉด ๊ทธ๋ฅ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฆฌํดํด์ค๋ ์๊ด์ด ์๊ตฌ๋!!
return originNum % sum == 0;
โค๏ธ๋ฌธ์
๋ ์ ์ a, b๊ฐ ์ฃผ์ด์ก์ ๋ a์ b ์ฌ์ด์ ์ํ ๋ชจ๋ ์ ์์ ํฉ์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์.
์๋ฅผ ๋ค์ด a = 3, b = 5์ธ ๊ฒฝ์ฐ, 3 + 4 + 5 = 12์ด๋ฏ๋ก 12๋ฅผ ๋ฆฌํดํฉ๋๋ค.
๐ํ์ด
//1. if ๋ฌธ์ ์ฌ์ฉํ์ฌ
public long solution(int a, int b) {
long answer = 0;
// a, b ์ฌ์ด์ ์ํ ๋ชจ๋ ์ ์์ ํฉ
if(a>b){
for(long i = b; i<= a; i++){
answer += i;
}
}
else {
for(long i = a; i<= b; i++){
answer += i;
}
}
return answer;
}
//2. ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉ
public long solution(int a, int b) {
long answer = 0;
for(int i =0; i<= (a < b ? b-a : a-b); i++){
answer += a < b ? a+i : a-i;
}
return answer;
}
๐๋ค๋ฅธ ํ์ด
public long solution(int a, int b) {
return sumAtoB(Math.min(a, b), Math.max(b, a));
}
private long sumAtoB(long a, long b) {
//a : ์ต์๊ฐ, b: ์ต๋๊ฐ
return (b - a + 1) * (a + b) / 2;
}
๐์๋ก ์๊ฒ ๋ ์
- ๋ฑ์ฐจ์์ด ๊ณต์์ ํ์ฉํ์ฌ ๋ฐ๋ณต๋ฌธ ์์ด ๋ฌธ์ ๋ฅผ ํธ์
จ๋ค...๋ฑ์ฐจ์์ด์ด๋ผ๋...๋ฑ์ฐจ์์ด์ด๋ผ๋...!!
๋ฑ์ฐจ์์ด ๊ณต์ : ๋ฑ์ฐจ์์ด ์ฒซ์งธํญ๋ถํฐ ์ nํญ๊น์ง์ ํฉ sum(๋ด ํธ์์)
- ์ฒซ์งธํญ a, nํญ์ด l ์ผ๋ a~nํญ๊น์ง์ ํฉ sum = n(a+l)/2
- ์ฒซ์งธํญ a, ๊ณต์ฐจ(ํญ๊ฐ์ ์ฐจ์ด)๊ฐ d์ผ ๋ s, sum = n(2a+(n-1)d)/2
- ๋ฑ์ฐจ์์ด ํฉ ๊ณต์: n*(n+1)/2 | r= ์ฐจ์ n=count
- Math.min()/ Math.max() ๋ฉ์๋
Math.min(int a, int b) : a, b ๋ฅผ ๋น๊ตํ์ฌ ์ต์๊ฐ์ ๋ฐํํด ์ค๋ค.Math.max(int a, int b) : a, b ๋ฅผ ๋น๊ตํ์ฌ ์ต๋๊ฐ์ ๋ฐํํด ์ค๋ค.int minInt = Math.min(10, 20); // minInt๋ 10
double minDouble = Math.min(3.14, 2.71); // minDouble์ 2.71
int maxInt = Math.max(10, 20); // maxInt๋ 20
double maxDouble = Math.max(3.14, 2.71); // maxDouble์ 3.14
โค๏ธ๋ฌธ์
์ฃผ์ด์ง ์๊ฐ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณต
์
๋ ฅ๋ ์๊ฐ ์ง์๋ผ๋ฉด 2๋ก ๋๋๋ค
์
๋ ฅ๋ ์๊ฐ ํ์๋ผ๋ฉด 3์ ๊ณฑํ๊ณ 1์ ๋ํ๋ค
๊ฒฐ๊ณผ๋ก ๋์จ ์์ ๊ฐ์ ์์
์ 1์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
์ฃผ์ด์ง ์๊ฐ 1 -> 0 / ๋ฐ๋ณต 500 ์ด์ํ๋ค๋ฉด -1 return
๐ํ์ด
public int solution(int num) {
int answer = 0;
long colNum = num;
// num ์ด 1 ์ด๋ฉด 0 return ํด์ผ ํ๊ธฐ ๋๋ฌธ์ 1์ด ์๋๋์ ๋ฐ๋ณต๋ฌธ ์คํ
while(colNum != 1){
// if๋ฌธ ์ผํญ์ฐ์ฐ์์ผ๋ก ํํ์
// num = (num % 2 == 0 )? num / 2 : num * 3 + 1;
if (colNum % 2 == 0) { // ์ง์์ผ ๋ ๊ณ์ฐ
colNum /= 2;
} else { // ํ์์ผ ๋ ๊ณ์ฐ
colNum = colNum * 3 + 1;
}
answer++; // ํ์ ์ถ๊ฐ
//500๋ฒ ์๋ํ๋ฉด -1 return
if(answer == 500){
return -1;
}
}
return answer;
}
๐๋ค๋ฅธ ํ์ด
public int collatz(int num) {
long n = (long)num;
for(int i=0; i<500; i++){
if(n==1) return i;
n = (n%2==0) ? n/2 : n*3+1;
}
return -1;
}
๐์๋ก ์๊ฒ ๋ ์
๋ค๋ฅธ ์ฌ๋์ ํ์ด์์ ์ด๋ฏธ ๋ฐ๋ณต์ ์ต๋ ํ์๊ฐ ์ฃผ์ด์ก๊ธฐ์ for๋ฌธ์
์ฌ์ฉํด์ ๋ฐ๋ณต์ ํ๋ ๊ฒ๋ ์ข์ ์ ํ์ง๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
โค๏ธ๋ฌธ์
array์ ๊ฐ element ์ค divisor๋ก ๋๋์ด ๋จ์ด์ง๋ ๊ฐ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ฐฐ์ด์ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
divisor๋ก ๋๋์ด ๋จ์ด์ง๋ element๊ฐ ํ๋๋ ์๋ค๋ฉด ๋ฐฐ์ด์ -1์ ๋ด์ ๋ฐํํ์ธ์.
๐ํ์ด
// 1. array์ length๋ฅผ ๊ตฌํ์ฌ ์ ๋ ฌํ๊ธฐ
class Solution {
public int[] solution(int[] arr, int divisor) {
int answer[];
int arrLength = 0;
//arr์ divisor ์ ๋๋์ด์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for(int i : arr){
if(i%divisor == 0){
arrLength++;
}
}
if(arrLength == 0){
answer = new int[]{-1};
}else{
answer = new int[arrLength];
int index = 0;
for(int i : arr){
if(i % divisor == 0){
answer[index++] = i;
}
}
//์ ๋ ฌ
Arrays.sort(answer);
}
return answer;
}
}
// 2.List์ ๋ฐฐ์ด์ ๋ด์์ ์ ๋ ฌํด์ฃผ๊ธฐ
class Solution {
public int[] solution(int[] arr, int divisor) {
List<Integer> result = new ArrayList<>();
//arr length ๋งํผ ๋ฐ๋ณต
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor == 0) {
result.add(arr[i]);
}
}
/* ํฅ์๋ for ๋ฌธ์ผ๋ก ๋ณ๊ฒฝ
for (int num : arr) {
if (num % divisor == 0) {
result.add(num);
}
}
*/
if (result.isEmpty()) { // list๊ฐ ๋น์ด์๋ค๋ฉด
int[] answer = {-1};
return answer;
} else { // ๋ฐฐ์ด์ ๋ฆฌ์คํธ ๋ฃ์ด์ฃผ๊ธฐ
int[] answer = new int[result.size()];
for(int i=0; i<result.size(); i++){
answer[i] = result.get(i);
}
Arrays.sort(answer);
return answer;
}
}
}
๐์๋ก ์๊ฒ ๋ ์
๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ ์ ์๋ ์ํฉ์์๋ ์ญ์ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋๊ฒ ๋ ํจ์ธ์ ์ธ ๋ฐฉ๋ฒ ์ธ ๊ฒ ๊ฐ๋ค.
ํ์ง๋ง ๋ค์ Array๋ก ๋ณํํด์ผ ํ๋ ๊ฒ๋ ์ผ๋ํด์ผ ํ๋ ๊ฒ ๊ฐ๋ค.
ํธ๋ํฐ ๋ฒํธ ๊ฐ๋ฆฌ๊ธฐ
โค๏ธ๋ฌธ์
ํ๋ก๊ทธ๋๋จธ์ค ๋ชจ๋ฐ์ผ์ ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ์ํด ๊ณ ์ง์๋ฅผ ๋ณด๋ผ ๋ ๊ณ ๊ฐ๋ค์ ์ ํ๋ฒํธ์ ์ผ๋ถ๋ฅผ ๊ฐ๋ฆฝ๋๋ค.
์ ํ๋ฒํธ๊ฐ ๋ฌธ์์ด phone_number๋ก ์ฃผ์ด์ก์ ๋, ์ ํ๋ฒํธ์ ๋ท 4์๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ์ซ์๋ฅผ ์ ๋ถ *์ผ๋ก ๊ฐ๋ฆฐ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
๐ํ์ด
class Solution {
public String solution(String phone_number) {
int strLength = phone_number.substring(0,phone_number.length()-4).length();
String star = "*".repeat(strLength);
String backNumber = phone_number.substring(phone_number.length()-4);
return star+backNumber;
}
}
๐๋ค๋ฅธ ํ์ด
class Solution {
public String solution(String phone_number) {
char[] ch = phone_number.toCharArray();
for(int i = 0; i < ch.length - 4; i ++){
ch[i] = '*';
}
return String.valueOf(ch);
}
}
๐์๋ก ์๊ฒ ๋ ์
- ๋๋ substring๋ฅผ ์ฌ์ฉํ์ฌ ํ์์ง๋ง ํ๊ณ ๋์ ๋ค๋ฅธ ๋ถ์ด ํผ ๊ฒ์ ๋ดฃ๋๋ฐ charArray๋ก ๋ณ๊ฒฝํ๋ค ๋ค์ 4์๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง๋ฅผ '*'๋ก ๋ณ๊ฒฝํด ์ฃผ๊ณ ๋ค์ String์ผ๋ก ๋ณํํด์ฃผ๋ ํ์ด์๋ค.
ํจ์ฌ ๊น๋ํ๊ณ ์ฝ๋๋ฅผ ์คํํด๋ดค์๋ ์๋๋ฉด์์ ๋ ๋น ๋ฅธ ๊ฒ ๊ฐ๋ค. api ์ฌ์ฉ๋ณด๋ค for๋ฌธ๊ณผ, ํ๋ณํ, ์ฌ์ฉ์ ์ข ๋ ๊ณต๋ถํด์ผ ํ ๊ฒ ๊ฐ๋ค.
์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ
โค๏ธ๋ฌธ์
์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด, arr ์์ ๊ฐ์ฅ ์์ ์๋ฅผ ์ ๊ฑฐํ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์. ๋จ, ๋ฆฌํดํ๋ ค๋ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ์ ๋ฐฐ์ด์ -1์ ์ฑ์ ๋ฆฌํดํ์ธ์. ์๋ฅผ๋ค์ด arr์ด [4,3,2,1]์ธ ๊ฒฝ์ฐ๋ [4,3,2]๋ฅผ ๋ฆฌํด ํ๊ณ , [10]๋ฉด [-1]์ ๋ฆฌํด ํฉ๋๋ค.
๐ํ์ด
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
//๊ฐ์ฅ ์์ ์๋ฅผ ์ ๊ฑฐํ ๋ฐฐ์ด์ ๋ฆฌํด, ๋น ๋ฐฐ์ด์ผ ๊ฒฝ์ฐ -1 ์ฑ์์ ๋ฆฌํด
if (arr.length == 1) {
return new int[]{-1};
}
//์๋ณธ ๋ฐฐ์ด์ -1 ๋งํผ ๋ฐฐ์ด ์นดํผ
int[] answer = Arrays.copyOf(arr, arr.length - 1);
int minIdx = 0;
for(int i =0; i < arr.length; i++){
if(arr[i] < arr[minIdx]){
//minIdx์ i๋ฅผ ์ ์ฅ
minIdx = i;
}
}
for(int i = minIdx; i < answer.length; i++){
answer[i] = arr[i +1];
}
return answer;
}
}
๐์ฝ๋ ์ค๋ช
๋ฐฐ์ด์ ๊ฐ์ฅ ์์ ์๋ฅผ ์ ๊ฑฐํ๋ ๋ฌธ์ ์๋ค.
1. ์๋ณธ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1์ผ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์์ -1 return ํด์ฃผ๊ธฐ
2. ์๋ณธ ๋ฐฐ์ด ๊ธธ์ด์ -1 ๋งํผ ๋ณต์ฌํ๊ธฐ
3. ์๋ณธ ๋ฐฐ์ด์ ์ต์๊ฐ์ ๊ฐ์ง๋ ์์์ ์ธ๋ฑ์ค ๊ตฌํ๊ธฐ
4. ๋ณต์ฌํ ๋ฐฐ์ด์ ์ต์๊ฐ ์ธ๋ฑ์ค ์๋ฆฌ๋ถํฐ ์ธ๋ฑ์ค+1 ๋ก ๋ณ๊ฒฝํด์ฃผ๊ธฐ
-> ์ด๋ ๊ฒ ๊ตฌ์ฑํ๋ค. ํ ...LinkedList ๋ฅผ ์ฐ๋๊ฑด ์ด๋จ๊น ์๊ฐ๋ ๋ ๋ค
๐GPT๊ฐ ๋ณด์ํด ์ค ์ฝ๋
class Solution {
public int[] solution(int[] arr) {
// ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1์ผ ๊ฒฝ์ฐ -1์ ๊ฐ์ง ๋ฐฐ์ด ๋ฐํ
if (arr.length == 1) {
return new int[]{-1};
}
// ์ต์๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๊ธฐ
int minIdx = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] < arr[minIdx]) {
minIdx = i;
}
}
// ์๋ก์ด ๋ฐฐ์ด ์์ฑ
int[] answer = new int[arr.length - 1];
// ์ต์๊ฐ์ ์ ์ธํ๊ณ ์์ ์ด๋
for (int i = 0, j = 0; i < arr.length; i++) {
if (i != minIdx) {
answer[j++] = arr[i];
}
}
return answer;
}
}
๐์๋ก์ด ์
์งํผํฐ๊ฐ ์ฝ๋ ๋ณด์์ ํด์คฌ๋ค.
-๋ฐฐ์ด ๋ณต์ฌ ๊ณผ์ ์ ์ญ์ ํ ํ ์๋ก์ด ๋ฐฐ์ด์ ์ง์ ์์ ์ด๋์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์คฌ๋ค.
for ๋ฌธ ์ ์ธ๋ถ ์ด๊ธฐํ ๋ถ์ ๋๊ฐ๋ฅผ ๋์์ ์ด๊ธฐํ ํ ์ ์๋ค๋๊ฒ ๋๋ฌด ์ ๊ธฐํ๋ค.
โค๏ธ๋ฌธ์
๋จ์ด s์ ๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ๋ง๋ค์ด ๋ณด์ธ์. ๋จ์ด์ ๊ธธ์ด๊ฐ ์ง์๋ผ๋ฉด ๊ฐ์ด๋ฐ ๋๊ธ์๋ฅผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค
๐ํ์ด
public static String solution(String s) {
String answer = "";
String[] strArr = s.split("");
//๋จ์ด์ ๊ธธ์ด๊ฐ ์ง์๋ฉด ๊ฐ์ด๋ฐ ๋๊ธ์ ๋ฐํ
// s ๊ธธ์ด 1 ์ด์ 100 ์ดํ
int len = s.length();
if( !(len % 2 == 0)){//ํ์์ผ๋
// char ch = s.charAt(len/2);
answer = strArr[len/2];
}else{ //์ง์๋ ๊ฐ์ด๋ฐ ๋๊ฐ 0123 2,1
answer = strArr[len/2-1] + strArr[len/2] ;
}
๐๋ค๋ฅธ ํ์ด
String getMiddle(String word){
return word.substring((word.length()-1)/2, word.length()/2 + 1);
}
๐์๋ก ์๊ฒ ๋ ์
๋ค๋ฅธ ๋ถ์ ํ์ด๋ฅผ ๋ณด๋ ์ค ๋๋ฌด ๊น๋ํด์ ํ๋ฒ ์ ์ด๋ณธ๋ค.
substring์ ์ฌ์ฉํ์ฌ ์์์ธ๋ฑ์ค์ (length.-1 /2) ๋์ธ๋ฑ์ค(word.length()/2 + 1) ๋ฒ์๋ฅผ ์ง์ ํด์คฌ๋ค.
ํ ....๋๋ฌด ์ฐฝํผํด์ง๋ ์ง์ ๋ถํ ๋์ ํ์ด...
โค๏ธ๋ฌธ์
๋ ์ ์ left์ right๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. left๋ถํฐ right๊น์ง์ ๋ชจ๋ ์๋ค ์ค์์, ์ฝ์์ ๊ฐ์๊ฐ ์ง์์ธ ์๋ ๋ํ๊ณ , ์ฝ์์ ๊ฐ์๊ฐ ํ์์ธ ์๋ ๋บ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ํ์ด
public int solution(int left, int right) {
int answer = 0;
//13,14,15,16,17 ๊น์ง
for(int i = left; i<= right; i++){//left~right ๊น์ง์ ์๋ค
//์ฝ์์ ๊ฐ์๋ฅผ return ๋ฐ์์ผ ํ๋ค.
//i = left i ๋ณ๋ก count ํ์
int count=0;
for(int j=1; j<=i; j++){
if(i % j ==0){
count++;
}
}
System.out.println(i+" : ์ฝ์๊ฐ์ : "+count);
if(count % 2 == 0){ //์ฝ์๊ฐ์๊ฐ ์ง์
answer += i;
}else{
answer -= i;
}
}
return answer;
}
๐๋ค๋ฅธ ํ์ด
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//์ ๊ณฑ์์ธ ๊ฒฝ์ฐ ์ฝ์์ ๊ฐ์๊ฐ ํ์
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//์ ๊ณฑ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ์์ ๊ฐ์๊ฐ ์ง์
else {
answer += i;
}
}
return answer;
}
}
๐์๋ก ์๊ฒ ๋ ์
์ ๊ณฑ์์ ๊ฒฝ์ฐ ์ฝ์์ ๊ฐ์๊ฐ ํ์๋ผ๋ ์ฌ์ค๋ก ์ฝ๋๊ฐ ์์ฃผ ๊ฐ๊ฒฐํด์ก๋ค!!
โค๏ธ๋ฌธ์
๋ ์๋ฅผ ์
๋ ฅ๋ฐ์ ๋ ์์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์. ๋ฐฐ์ด์ ๋งจ ์์ ์ต๋๊ณต์ฝ์, ๊ทธ๋ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฃ์ด ๋ฐํํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ 3, 12์ ์ต๋๊ณต์ฝ์๋ 3, ์ต์๊ณต๋ฐฐ์๋ 12์ด๋ฏ๋ก solution(3, 12)๋ [3, 12]๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
๐ํ์ด
public int[] solution(int a, int b) {
int answer[] = new int[2];
//์ต๋ ๊ณต์ฝ์ ๋์์ ์ต๋ ๊ณต์ฝ์
//์ต์๊ณต๋ฐฐ์ = ๋์์ฐ์์ ๊ณฑ / ์ต๋๊ณต์ฝ์
int max = Math.max(a, b);
int min = Math.min(a, b);
while (min != 0) {
//ํธ์ ๋ฒ ์ฌ์ฉ ํ์ฌ max % mix ์ ํด์ค
int temp = min;
min = max % min;
max = temp;
}
//์ต๋ ๊ณต์ฝ์
answer[0]=max;
//์ต์๊ณต๋ฐฐ์
answer[1] = a*b/ max;
return answer;
}
๐๋ค๋ฅธ ํ์ด
public int[] gcdlcm(int a, int b) {
int[] answer = new int[2];
answer[0] = gcd(a,b);
answer[1] = (a*b)/answer[0];
return answer;
}
public static int gcd(int p, int q){
if (q == 0) return p;
return gcd(q, p%q);
}
๐์๋ก ์๊ฒ ๋ ์
๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ `์ ํด๋ฆฌ๋ ํธ์ ๋ฒ` ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ค.
์ต๋ ๊ณต์ฝ์ : ๋ ์ ์ด์์ ์ฌ๋ฌ ์์ ๊ณต์ฝ์ ์ค ์ต๋์ธ ์
- GCD ๋ผ๊ณ ํ๋ค. (Greatest Common Divisor)
- ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ, ์ฌ๊ท ํจ์ ์ฌ์ฉ 2๊ฐ์ง๊ฐ ์กด์ฌํ๋ค!
//for๋ฌธ ์ฌ์ฉ
public static int gcdFor(int a, int b) {
int answer = 0; // ์ต๋ ๊ณต์ฝ์
//๋ ์ ์ค ํฐ ๊ฐ๊ณผ ์์๊ฐ์ ๊ตฌํ๊ธฐ
int max = Math.max(a, b);
int min = Math.min(a, b);
// ๋ ์๋ฅผ ๊ฐ๊ฐ i๋ก ๋๋ ์ ๋์์ ๋๋จธ์ง๊ฐ 0์ผ๋ -> ๋์์ ์ต๋ ๊ณต์ฝ์
for (int i = 1; i <= min; i++) {
if (a % i == 0 && b % i == 0) {
answer = i;
}
}
return answer;
}
//์ฌ๊ทํจ์ ์ฌ์ฉ
public static int gcdRec(int a, int b) {
// ๋๋จธ์ง๊ฐ 0์ผ ๊ฒฝ์ฐ ์ต๋ ๊ณต์ฝ์๋ b์ด๋ค.
if (a % b == 0) {
return b;
}
// ์ฌ๊ท ํธ์ถ์ ํตํ์ฌ ํด๊ฒฐ.
return gcdRec(b, a % b);
}
์ต์๊ณต๋ฐฐ์ = ๋ ์์ฐ์(a,b)์ ๊ณฑ ๋๋๊ธฐ ์ต๋ ๊ณต์ฝ์
private static int min(int a, int b, int max) {
return (a * b) / max; // max : ์ต๋ ๊ณต์ฝ์
}
โค๏ธ๋ฌธ์
์ด๋ค ๋ฌธ์ฅ์ ๊ฐ ์ํ๋ฒณ์ ์ผ์ ํ ๊ฑฐ๋ฆฌ๋งํผ ๋ฐ์ด์ ๋ค๋ฅธ ์ํ๋ฒณ์ผ๋ก ๋ฐ๊พธ๋ ์ํธํ ๋ฐฉ์์ ์์ ์ํธ๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด "AB"๋ 1๋งํผ ๋ฐ๋ฉด "BC"๊ฐ ๋๊ณ , 3๋งํผ ๋ฐ๋ฉด "DE"๊ฐ ๋ฉ๋๋ค. "z"๋ 1๋งํผ ๋ฐ๋ฉด "a"๊ฐ ๋ฉ๋๋ค. ๋ฌธ์์ด s์ ๊ฑฐ๋ฆฌ n์ ์
๋ ฅ๋ฐ์ s๋ฅผ n๋งํผ ๋ฏผ ์ํธ๋ฌธ์ ๋ง๋๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์.
๐ํ์ด
public static String solution(String s, int n) {
String answer = "";
char[] chArr = s.toCharArray();
// AB 1๋งํผ ๋ฐ๋ฉด BC
// Z 1 ๋ฐ๋ฉด A
// ๋๋ฌธ์,์๋ฌธ์, ๊ณต๋ฐฑ
for(char ch : chArr){
if('a'<=ch && ch<='z'){ //ch๊ฐ ์๋ฌธ์์ผ๋
answer += (char)(ch + n) > 'z' ? (char)(ch - 26 + n) : (char)(ch + n);
// ch + n > z ? ch - z + n : ch + n
}
else('A'<=ch && ch<='Z') { //ch๊ฐ ๋๋ฌธ์์ผ๋
answer += (char)(ch + n) > 'Z' ? (char)(ch - 26 + n) : (char)(ch + n);
}else { // ๊ณต๋ฐฑ์ผ๋๋ ๊ณต๋ฐฑ ์ ์ง
answer += " ";
}
}
return answer;
}
๐๋ค๋ฅธ ํ์ด
String caesar(String s, int n) {
String result = "";
n = n % 26;
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isLowerCase(ch)) {
ch = (char) ((ch - 'a' + n) % 26 + 'a');
} else if (Character.isUpperCase(ch)) {
ch = (char) ((ch - 'A' + n) % 26 + 'A');
}
result += ch;
}
return result;
}
ch - 'a': ch๊ฐ 'a'๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ช๋ฒ์งธ์ ์๋์ง ๋ํ๋ธ๋ค+n : ์ด๋ํ๊ณ ์ ํ๋ ์์น๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋ํด์ค๋ค% 26 : ์ญ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋์ง ์๊ฒ ํ๋ค.+'a' ๋ค์ 'a'๋ฅผ ๋ํด์ค์ 'a'๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ ์์น์ ํด๋นํ๋ ์๋ก์ด ์๋ฌธ์๋ฅผ ์ป์ ์ ์๋ค.- Character.isLowerCase() & Character.isLowerCase() : char ํ์
๋ฌธ์์ ๋์๋ฌธ์ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ true or flase๋ฅผ ๋ฐํํ์ฌ ์ค๋ค.
- ์ํ๋ฒณ ์ฃผ๊ธฐ๋ฅผ + ๋๋จธ์ง ์ฐ์ฐ์ ์ฌ์ฉํ์ฌ ๋ณด๋ค ๊ฐ๊ฒฐํ ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์๋ค๋ ์ฌ์ค์ ์์๋ค.
ํ ...์๊ณ ๋ฆฌ์ฆ ๋๋ฌด ์ด๋ ต๋ค ์์ง ์ปดํจํฐ์ ์ฌ๊ณ ๊ฐ ๋ถ์กฑํ ๊ฒ ๊ฐ๋ค.