Day 20 수학, 시뮬레이션, 문자열, 사칙연산
Day20 20단계 2023-11-09
1. 직사각형 넓이 구하기
class Solution {
public int solution(int[][] dots) {
int x = dots[0][0];
int y = dots[0][1];
int answer = 1;
for (int i = 1; i < dots.length; i++) {
if (x == dots[i][0]) {
answer *= Math.abs(y - dots[i][1]);
} else if (y == dots[i][1]) {
answer *= Math.abs(x - dots[i][0]);
}
}
return answer;
}
}
2. 캐릭터의 좌표
- 각 움직임 입력 String을 switch로 판별해서 방향대로 x, y값을 증감시키고, 경계인 board 보다 좌표가 크거나 작으면 board의 좌표로 바꿨다.
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = {0, 0};
for(String s : keyinput) {
switch (s) {
case "left":
answer[0]--;
if (answer[0] < (-1)*board[0]/2) answer[0] = (-1)*board[0]/2;
break;
case "right":
answer[0]++;
if (answer[0] > board[0]/2) answer[0] = board[0]/2;
break;
case "up":
answer[1]++;
if (answer[1] > board[1]/2) answer[1] = board[1]/2;
break;
case "down":
answer[1]--;
if (answer[1] < (-1)*board[1]/2) answer[1] = (-1)*board[1]/2;
break;
}
}
return answer;
}
}
- 다른 사람 풀이 : board의 좌표로 바꿔줄 때 Math.min(), Math.max()로 판별해서 바꿔주었다.
3. 최댓값 만들기 (2)
import java.util.*;
class Solution {
public int solution(int[] numbers) {
Arrays.sort(numbers);
return Math.max(numbers[numbers.length-1]*numbers[numbers.length-2], numbers[0]*numbers[1]);
}
}
4. 다항식 더하기
- 몇몇 부분은 삼항 연산자나 향상된 for문으로 더 길이를 줄일 수 있다.(다른 사람들 풀이에서 참고)
class Solution {
public String solution(String polynomial) {
String[] strArr = polynomial.split(" [+] ");
int xint = 0;
int num = 0;
for (int i = 0; i < strArr.length; i++) {
if (strArr[i].contains("x")) {
String xnum = strArr[i].substring(0, strArr[i].length()-1);
if (xnum.isEmpty()) xnum = "1";
xint += Integer.parseInt(xnum);
} else {
num += Integer.parseInt(strArr[i]);
}
}
String answer = "";
if (xint > 1 && num != 0) answer = xint+"x + "+num;
else if (num == 0) {
if (xint > 1) answer = xint+"x";
else if (xint == 1) answer = "x";
else if (xint == 0) answer = "";
} else if (xint == 0) {
if (num != 0) answer = ""+num;
} else answer = "x + "+num;
return answer;
}
}