📌Back-End/프로그래머스

Java 프로그래머스 코딩테스트 입문 Day 20 수학, 시뮬레이션, 문자열, 사칙연산

구 일 2024. 7. 14. 19:46
728x90
반응형

 

직사각형 넓이 구하기

프로그래머스 직사각형 넓이 구하기 자바

 

 

/**
 * 코딩테스트 입문 Day 20 수학, 시뮬레이션, 문자열, 사칙연산
 * 직사각형 넓이 구하기
 */
public class Main1 {
    public static void main(String[] args) {
        System.out.println(solution(new int[][]{{1, 1}, {2, 1}, {2, 2}, {1, 2}}));
        System.out.println(solution(new int[][]{{-1, -1}, {1, 1}, {1, -1}, {-1, 1}}));
    }

    public static int solution(int[][] dots) {
        int w = 0;
        int h = 0;
        int x = dots[0][0];
        int y = dots[0][1];

        for (int i = 1; i < dots.length; i++) {
            if (x != dots[i][0]) {
                w = Math.abs(x - dots[i][0]);
            }

            if (y != dots[i][1]) {
                h = Math.abs(y - dots[i][1]);
            }
        }

        return w * h;
    }
}

 

 

캐릭터의 좌표

프로그래머스 캐릭터의 좌표 자바

 

 

/**
 * 코딩테스트 입문 Day 20 수학, 시뮬레이션, 문자열, 사칙연산
 * 캐릭터의 좌표
 */
public class Main2 {
    public static void main(String[] args) {
        int[] result = solution(new String[]{"left", "right", "up", "right", "right"}, new int[]{11, 11});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();

        result = solution(new String[]{"down", "down", "down", "down", "down"}, new int[]{7, 9});
        for (int num : result) {
            System.out.print(num + " ");
        }
        System.out.println();
    }

    public static int[] solution(String[] keyinput, int[] board) {
        int[] answer = new int[2];

        for (String s : keyinput) {
            if (s.equals("up") && answer[1] < (board[1] / 2)) {
                answer[1]++;
            } else if (s.equals("down") && answer[1] > (board[1] / -2)) {
                answer[1]--;
            } else if (s.equals("left") && answer[0] > (board[0] / -2)) {
                answer[0]--;
            } else if (s.equals("right") && answer[0] < (board[0] / 2)) {
                answer[0]++;
            }
        }

        return answer;
    }
}

 

 

최댓값 만들기 (2)

프로그래머스 최댓값 만들기 (2) 자바

 

 

import java.util.Arrays;

/**
 * 코딩테스트 입문 Day 20 수학, 시뮬레이션, 문자열, 사칙연산
 * 최댓값 만들기 (2)
 */
public class Main3 {
    public static void main(String[] args) {
        System.out.println(solution(new int[]{1, 2, -3, 4, -5}));
        System.out.println(solution(new int[]{0, -31, 24, 10, 1, 9}));
        System.out.println(solution(new int[]{10, 20, 30, 5, 5, 20, 5}));
    }

    public static int solution(int[] numbers) {
        Arrays.sort(numbers);
        int a = numbers[0] * numbers[1];
        int b = numbers[numbers.length - 2] * numbers[numbers.length - 1];

        return Math.max(a, b);
    }
}

 

 

다항식 더하기

프로그래머스 다항식 더하기 자바

 

 

/**
 * 코딩테스트 입문 Day 20 수학, 시뮬레이션, 문자열, 사칙연산
 * 다항식 더하기
 */
public class Main4 {
    public static void main(String[] args) {
        System.out.println(solution("3x + 7 + x"));
        System.out.println(solution("x + x + x"));
    }

    public static String solution(String polynomial) {
        StringBuilder sb = new StringBuilder();
        String[] strArr = polynomial.split(" ");

        int x = 0;
        int n = 0;
        for (String s : strArr) {
            if (s.contains("x")) {
                if (s.equals("x")) {
                    x++;
                } else {
                    x += Integer.parseInt(s.replace("x", ""));
                }
            } else if (!s.equals("+")) {
                n += Integer.parseInt(s);
            }
        }

        if (x == 1 && n == 0) {
            sb.append("x");
        } else if (x == 1) {
            sb.append("x + ").append(n);
        } else if (n == 0) {
            sb.append(x).append("x");
        } else if (x == 0) {
            sb.append(n);
        } else {
            sb.append(x).append("x + ").append(n);
        }

        return sb.toString();
    }
}

 

 

 

728x90
반응형