프로그래머스는 처음 사용해봐서 처음에 살짝 당황;;

 

2024.03.05

두 수의 합

class Solution {
    public int solution(int num1, int num2) {
        int answer = -1;
        
        answer = num1 + num2; 	
        return answer;
    }
}

 

 

두수의 차

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        answer = num1 - num2;
        return answer;
    }
}

 

 

나이 출력

class Solution {
    public int solution(int age) {
        int answer = 0;
        answer = 2022 - age + 1;
        return answer;
    }
}

 

 

두 수의 곱

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1 * num2;
        return answer;
    }
}

 

 

몫 구하기

class Solution {
    public int solution(int num1, int num2) {
        int answer = num1/num2;
        return answer;
    }
}

 

 

숫자 비교하기

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        if(num1 == num2)
            answer = 1;
        else
            answer = -1;
        return answer;
    }
}

//삼항 연산자 이용하기
int answer = (num1 == num2) ? 1 : -1;
(조건문) ? true결과 : false결과

 

 

2024.03.07

 

두 수의 나눗셈

class Solution {
    public int solution(float num1, float num2) {
        int answer = 0;
        float fanswer = num1/num2;
        answer = (int)(fanswer * 1000);

        return answer;
    }
}

 

이 문제 진짜 기발한 풀이로 푼 사람이 있었음. 

class Solution {
    public int solution(int num1, int num2) {
        int answer = 0;
        return num1 * 1000 / num2;
    }
}

 

 

분수의 덧셈

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int denom3, numer3 = 0;

        denom3 = denom1 * denom2;
        numer3 = (numer1*denom2) + (numer2*denom1);

        int max = 1;

        for(int i=1; i<=denom3 && i<=numer3;i++)
        {
            if(denom3 % i == 0 && numer3 % i ==0)
                max = i;
        }



        numer3 = numer3/max;
        denom3 = denom3/max;

        int[] answer = {numer3,denom3};
        return answer;
    }
}

 

 

배열 두 배 만들기

class Solution {
    public int[] solution(int[] numbers) {
        int[] answer = numbers.clone();
        for(int i =0; i< numbers.length; i++)
        {
            numbers[i] = numbers[i] * 2; 
            answer[i] = numbers[i];
        }

        return answer;
    }
}

 

 

2024.03.11

 

나머지 구하기

class Solution {
    public int solution(int num1, int num2) {
        int answer = -1;
        answer = num1%num2;
        return answer;
    }
}

 

 

중앙값 구하기

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int[] arrays = array;
        Arrays.sort(arrays);
        int num = 0;
        num = (array.length/2);
        int answer = arrays[num];
        return answer;
    }
}

 

 

최빈값 구하기

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int answer = 0;
        Arrays.sort(array);
        int max = array[array.length -1];
        int cnt[] = new int [max + 1];
        for(int i = 0; i <array.length; i++)
        {
            cnt[array[i]]++;
        }
        //Arrays.sort(cnt); // 이 부분이 있고 없고 차이가 왜 생기는 지?? 
        //경우에 따라 정상처리되는 경우가 있고 안되는 경우도 있음 ㅜㅜㅜㅜㅜ
        
        max = cnt[0];
        for(int i = 1; i<cnt.length; i++)
        {
            if(max<cnt[i])
            {
                max = cnt[i];
                answer = i;
            }
            else if(max == cnt[i])
            {
                answer =-1;
            }
            
        }
        return answer;
    }
}

 

 

짝수는 싫어요

 public int[] solution(int n) {
        int[] answer = {};
        answer[0] = 1;
        if(n%2 == 0)
            for(int i = 1; i<(n/2) -1; i++)
            {
                answer[i] = answer[i-1] + 2;
            }
        else
            for(int i = 1; i<n/2; i++)
            {
                answer[i] = answer[i-1] + 2;
            }
        
        return answer;
    }

 

 

2024.03.12

 

피자 나눠 먹기(1)

class Solution {
    public int solution(int n) {
        int answer = 0;
        if(n%7 == 0)
            answer = n/7;
        else 
            answer = n/7 +1;
        return answer;
    }
}

 

 

피자 나눠 먹기(2)

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i  = 1;i <100;i ++)//i피자 개수 	//while(true)로 실행시키면 break;없어도 됨
        {
            if((i*6)%n==0)
            {
                answer = i;
                break;
            }
        }
            
        return answer;
    }
}

 

피자 나눠 먹기(3)

class Solution {
    public int solution(int slice, int n) {
        int answer = (n%slice == 0)? n/slice : n/slice+1;
        
        return answer;
    }
}

 

 

배열의 평균값

class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        for(int i = 0; i<numbers.length; i++)
        {
            answer += numbers[i];
        }
        answer /= numbers.length;
        return answer;
    }
}

 

 

2024.03.13

 

옷가게 할인 받기

class Solution {
    public int solution(int price) {
        double answer = 0;
        if(price>=100000 && price<300000)
            answer = price*0.95;
        else if(price>=300000 && price<500000)
            answer = price*0.9;
        else if(price>=500000)
            answer = price*0.8;
        else
            answer = price;
        return (int)answer;
    }
}

 

 

아이스 아메리카노

 

class Solution {
    public int[] solution(int money) {
        int[] answer = {0,0};
        int americano = 5500;
        answer[0] = money/americano;
        answer[1] = money%americano;
        return answer;
    }
}

 

배열 뒤집기

 

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        int j = 0;
        for(int i = num_list.length - 1; i >= 0; i--)
        {     
            answer[j] = num_list[i];
            j++;
        }
        
        return answer;
    }
}

 

각도기

 

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length];
        int j = 0;
        for(int i = num_list.length - 1; i >= 0; i--)
        {     
            answer[j] = num_list[i];
            j++;
        }
        
        return answer;
    }
}

 

짝수의 합

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 0; i<=n;i++)
        {
            if(i%2 == 0)
                answer += i;
        }
        return answer;
    }
}

 

머쓱이보다 키 큰 사람

 

import java.util.*;
class Solution {
    public int solution(int[] array, int height) {
        int answer = 0;
        Arrays.sort(array);
        for(int i = 0; i<array.length; i++)
        {
            if(array[i]>height)
            {
                answer += 1;
            }    
        }
        return answer;
    }
}

 

배열 원소의 길이

 

class Solution {
    public int[] solution(String[] strlist) {
        int[] answer = new int[strlist.length];
        for(int i = 0; i<strlist.length; i++)
        {
            answer[i] = strlist[i].length();
        }
        return answer;
    }
}

 

length와 length()의 차이점

.length 배열의 길이
.length() 문자열 길이

 

2024.03.14

 

중복된 숫자 개수

 

class Solution {
    public int solution(int[] array, int n) {
        int answer = 0;
        for(int i = 0; i < array.length; i++)
        {
            if(array[i] == n)
                answer++;
        }
        return answer;
    }
}

 

편지

 

class Solution {
    public int solution(String message) {
        int answer = message.length() *2;
        return answer;
    }
}

 

양꼬치

 

class Solution {
    public int solution(int n, int k) {
        int answer = 0;
        if(n/10 != 0)
        {
            k -= n/10;
            answer = n*12000 + k*2000;
        }
        else
            answer = n*12000 + k*2000;
        return answer;
    }
}

 

문자열 뒤집기

 

class Solution {
    public String solution(String my_string) {
        String answer = "";
        
        StringBuffer sb = new StringBuffer(my_string);
        answer = sb.reverse().toString();
        
        return answer;
    }
}

https://yangbox.tistory.com/58

 

StringBuffer(StringBuilder) 클래스 기본 및 사용

StringBuffer(StringBuilder) 클래스 기본 및 사용 StringBuffer(StringBuilder) 클래스는 문자열에 대한 많은 편의기능을 제공한다. 그래서 필요에 따라 문자열을 작업할 때 String 객체가 아닌 StringBuffer(StringBuild

yangbox.tistory.com

 

 

세균 증식

 

class Solution {
    public int solution(int n, int t) {
        int answer = n;
        for(int i = 0; t>i; i++)
        {
            answer *= 2;
        }
        return answer;
    }
}

 

 

직각삼각형 출력하기

 

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
		String star = "";
        for(int i = 0;i<n;i++)
        {
            star += "*";
            System.out.println(star);
        }
    }
}

 

repeat()함수를 사용하면 간단하게 해결 가능

for(int i=1; i<=n; i++){
            System.out.println("*".repeat(i));
        }

 

String 메서드 중 하나로 String 문자열을 파라미터의 주어진 횟수만큼 반복한다.

파라미터가 0이면 빈 문자열 반환

파라미터가 음수면 illegalArgumentExceptionthrow에러 반환

파라미터가 1이면 문자열을 그대로 반환

 

짝수 홀수 개수

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = {0,0};
        for(int i = 0; i<num_list.length; i++)
        {
            if(num_list[i]%2 == 0)
                answer[0] +=1;
            else
                answer[1] +=1;
        }
        return answer;
    }
}

 

 

2024.03.18

 

문자 반복 출력하기

 

class Solution {
    public String solution(String my_string, int n) {
        String answer = "";
        for(int i = 0; i<my_string.length(); i++)
        {
            for(int j = 0; j<n; j++)
            {
                answer += (my_string.charAt(i)); 
            }
            
        }
        return answer;
    }
}

 

 

특정 문자 제거하기

 

class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";
        char Letter = letter.charAt(0);
        for(int i = 0; i<my_string.length(); i++)
        {
            if(my_string.charAt(i) != Letter)
            {
                answer += my_string.charAt(i);
            }
        }
        return answer;
    }
}

//replace를 이용한 풀이
class Solution {
    public String solution(String my_string, String letter) {
        String answer = "";

        answer = my_string.replace(letter, "");

        return answer;
    }
}

 

배열 자르기

 

class Solution {
    public int[] solution(int[] numbers, int num1, int num2) {
        int[] answer = new int[num2-num1+1];
        int j = 0;
        for(int i = 0; i<numbers.length; i++)
        {
            if(i>=num1 && i<=num2)
            {
                answer[j] += numbers[i];
                j++;
            }
        }
        return answer;
    }
}

 

외계행성의 나이

 

class Solution {
    public String solution(int age) {
        String answer = "";
        String temp = Integer.toString(age);
        for(int i = 0; i< temp.length(); i++)
        {
            answer += (char)((char)temp.charAt(i) + 49);
        }
        return answer;
    }
}

 

진료순서 정하기

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
     	
        for(int i = 0; i<emergency.length; i++)
        {
            for(int j = 0; j<emergency.length; j++)
            {
                if(emergency[i] < emergency[j])
                    answer[i] ++;
            }
            answer[i]++;
        }
        return answer;
    }
}

 

순서쌍의 개수

 

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i = 1; i<=n; i++)
        {
            if(n%i == 0)
                answer++;
        }
        return answer;
    }
}

 

 

2024.03.21

 

개미 군단

 

class Solution {
    public int solution(int hp) {
        int answer = 0;
        int big = hp/5;
        int middle = (hp%5)/3;
        int small = (hp%5)%3;
        return answer = big + middle + small;
    }
}

 

 

모스부호(1)

 

class Solution {
    public String solution(String letter) {
        String answer = "";
        String[] morseList = {".-","-...","-.-.","-..",".","..-.",
                "--.","....","..",".---","-.-",".-..","--","-.",
                "---",".--.","--.-",".-.","...","-","..-","...-",
                ".--","-..-","-.--","--.."};
        String[] morse;
        
        morse = letter.split(" ");
        for(int i = 0; i<morse.length; i++)
            for(int j = 0; i<morseList.length; j++)
                if(morse[i].equals(morseList[j]))
                {
                    answer +=(char)(j + 'a');
                    break;
                }
                    
        return answer;
    }
}

 

문자열을 비교할 때에는 .eqauls()를 사용해야 한다.

==연산자는 참조 동일성을 확인한다. 두 참조가 메모리의 동일한 개체를 가리키는지 확인한다. 동일한 문자열 개체를 참조하는지 확인하는 것.

 

가위 바위 보

 

class Solution {
    public String solution(String rsp) {
        String answer = "";
        String[] arr = rsp.split("");
        
        for(int i = 0; i<arr.length;i++)
        {
            if(arr[i].equals("2"))
    			answer += 0;
        	else if(arr[i].equals("0"))
                answer += 5;
        	else
                answer += 2;
        }
            return answer;
    }
}

 

구슬을 나누는 경우의 수

 

class Solution {
    public int solution(int balls, int share) {
        return combination(balls, share);
    }

    public static int combination(int balls, int share) {
        if (balls == share || share == 0) return 1;
        return combination((balls - 1), (share - 1)) + combination(balls - 1, share);
    }
}

내가 할려고 한 풀이는 for문이 많이 반복되서 다른 블로그 풀이를 찾아봤음!

이 풀이가 간단하고 ...더보기

 

2024.04.29

 

공 던지기

class Solution {
    public int solution(int[] numbers, int k) {
        int answer = 0;
        //int index = (0 + k)%numbers.length;
        int cnt = 0; //한 명 건너뛰기
        int index = 0;  
        while(cnt < k){
            if(index >=numbers.length)
                index %=numbers.length;
            answer = numbers[index];
            index += 2;
            cnt++;
        }

        return answer;
    }
}

if문 부분은 기억해두고 있으면 다른데서도 응용할 기회가 있을 것 같음.

 

배열 회전하기

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
        {
            for(int i = numbers.length-1; i>0; i--)
            {
                answer[i-1] = numbers[i];
            }
            answer[numbers.length-1] = numbers[0];
        }
        return answer;
    }
}

알고리즘이 어려운 건 아니었는데 생각하는 게 복잡하다. 머리가 굳은 듯.(good)

+ Recent posts