<문제 제시>
<문제설명>
2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다.
직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가
담겨있는 배열 dots가 매개변수로 주어질 때,
직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
<예시 입출력>
<문제 해결 과정>
어렵게만 느껴지는 2차원 좌표 평면에서의 도형 다루기 문제였다.
이번엔 넓이 구하기 문제로, 기준축을 세우고 시작하는 것이 수월하다는 느낌이 들었다.
// 1~4분면 가상 그림
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 6; j++) {
if(j == 3) {
System.out.print("|");
}
System.out.print('ㅁ');
}
if(i == 2) {
System.out.print("\nㅡㅡㅡ*ㅡㅡㅡ");
}
System.out.println();
}
2차원 좌표 평면을 임의로 그려보고 감을 잡아야했다.
기준축으로부터 width와 height (너비 x 높이)를 구해야했다.
for(int i = 1; i < dots.length; i++) {
// 첫번째 원소를 기준축으로 설정하였기때문에 첫번째 원소가 아닌 경우를 조건문으로 설정
if(x != dots[i][0]) {
width = Math.abs(x - dots[i][0]);
}
if(y != dots[i][1]) {
height = Math.abs(y - dots[i][1]);
}
}
넓이를 구할때는 음수, 양수를 판단하지 않으므로 Math.abs로 절대값 처리를 해주었다.
<전체코드>
public class calc_string {
public static int solution(String my_string) {
String[] temp = my_string.split(" ");
int answer = Integer.parseInt(temp[0]);
for(int i = 1; i < temp.length; i += 2) {
if(temp[i].equals("+")) {
System.out.println("temp[i] = " + temp[i]);
answer += Integer.parseInt(temp[i+1]);
System.out.println("answer = " + answer + ", temp[i+1] = " + temp[i+1]);
}
// - 가 입력되었을 경우
else {
System.out.println("temp[i] = " + temp[i]);
answer -= Integer.parseInt(temp[i+1]);
System.out.println("answer = " + answer + ", temp[i+1] = " + temp[i+1]);
}
}
return answer;
}
public static void main(String[] args) {
String my_string = "11 - 13";
System.out.println(solution(my_string));
}
}
2차원 배열을 다루는 문제에 익숙해져야겠다고 생각했다.
2차원 배열에 인덱스로 접근하는 부분 또한 계속해서 풀어봐야겠다고 느꼈다.
문제링크)
https://school.programmers.co.kr/learn/courses/30/lessons/120860#
'Algorithms > 프로그래머스' 카테고리의 다른 글
[프로그래머스] '다항식 더하기' - Java (0) | 2023.05.15 |
---|---|
[프로그래머스] '최댓값 만들기 (2)' - Java (0) | 2023.05.15 |
[프로그래머스] '제곱수 판별하기' - Java (1) | 2023.05.14 |
[프로그래머스] '치킨 쿠폰' - Java (0) | 2023.05.13 |
[프로그래머스] '문자열 계산하기' - Java (0) | 2023.05.13 |