📌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)
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
반응형