Day2

기초

덧셈식 출력하기

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.printf("%d + %d = %d",a,b,a+b);
    }
}

문자열 붙여서 출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        
        System.out.println(a+b);
    }
}

문자열 돌리기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        
        for(int i = 0; i<a.length(); i++){
            System.out.println(a.charAt(i));
        }
    }
}
  • 문자열: String 클래스의 메서드인 length()를 호출할 때는 괄호 ()가 필요합니다. 이는 메서드 호출이기 때문입니다.
  • 배열: 배열의 length는 메서드가 아니라 속성입니다. 속성에 접근할 때는 괄호가 필요하지 않습니다.

홀짝 구분하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        if(n%2 == 0){
            System.out.println(n + " is even");
            return;
        }
        System.out.println(n + " is odd");
    }
}

문자열 겹쳐쓰기

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = my_string.substring(0, s);

        int overwrite_length = Math.min(overwrite_string.length(), my_string.length() - s);
        answer += overwrite_string.substring(0, overwrite_length);

        if (s + overwrite_length < my_string.length()) {
            answer += my_string.substring(s + overwrite_length);
        }

        return answer;
    }
}

입문

두 수의 나눗셈

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

숫자 비교하기

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

분수의 덧셈

방법 1

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = {0, 0};
        
        int number = numer1*denom2 + numer2*denom1;
        int denom = denom1*denom2;
        
        int max = 1;  
        
        for(int i=1; i <= number && i<= denom; i++){    
            if(number%i==0 && denom%i==0){
                max = i;
            }
        }
        answer[0] = number/max;
        answer[1] = denom/max;
        
        return answer;
    }
}
  • 시간 복잡도 → O(min(number, denom))

방법 2

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        // 결과 분수의 분자와 분모 계산
        int numerator = numer1 * denom2 + numer2 * denom1;
        int denominator = denom1 * denom2;
        
        // 최대공약수(GCD) 계산
        int gcd = gcd(numerator, denominator);
        
        // 분수를 기약분수로 만듦
        int[] answer = {numerator / gcd, denominator / gcd};
        
        return answer;
    }

    // 유클리드 알고리즘을 이용하여 두 수의 GCD를 계산
    private int gcd(int a, int b) {
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }
}

  • 시간 복잡도 → O(log(min(a, b)))
  • GCD

배열 두 배 만들기

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

'알고리즘 > 프로그래머스' 카테고리의 다른 글

Day3  (0) 2024.08.13
프로그래머스 자바 - 두 개 뽑아서 더하기  (0) 2024.08.12