Blog

[Algorithm]11 좌표의 사분면 위치 알려주는 계산기 만들기

Author
Summary
사분면 계산기
Category
Study
Tags
Algorithm
Favorite
Memory Date
2023/08/03
Progress Status
Done
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
5 more properties
이번에는 좌표를 입력하면 1,2,3,4 사분면중 어디에 위치하는지 알려주는 프로그램이다. 문제가 길지만 그만큼 조건을 다 주어진다는 점에서 대충보고 작성하다가 1차배열로 해결되는 것을 2차배열로 작성할 뻔 했다. 문제를 유심히보는 버릇을 들여야 겠다.
1. Main.java
package Algorithm09; public class Main { public static void main(String[] args) { Solution solution = new Solution(); solution.inputElement(); } }
Java
복사
2. Solution.java
조건 부분을 천천히 생각하면서 풀어냈다. 연산은 이미 제한조건으로 다 주어줬기 때문에 조건을 실수하지 않고 작성하면 된다. 마음이 급해서 조건을 생략하고 보다가 2차 배열을 사용해야하는지 착각했다. 다음부턴 제한 조건을 유의하면서 진행해야 겠다.
package Algorithm09; import java.util.Scanner; public class Solution { /*문제 설명 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다. 스크린샷 2022-07-07 오후 3.27.04 복사본.png x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다. x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다. x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다. x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다. x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.*/ // dot의 길이 = 2 // dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다 //-500 ≤ dot의 원소 ≤ 500 // dot의 원소는 0이 아닙니다. //필요한 데이터 //int x 입력 y 입력 2개 //x, y 2개 값을 담는 배열 //////////// [{x,y}, {x,y}, ... ] XXXX //////////// 그럼 가변배열이여야 되는가. XXXX //////////// 배열의 [n][0] idx = x XXXX //////////// 배열의 [n][1] idx = y XXXX // 제한조건을 늦게 봤다. 1차배열로 진행 // [{x}, {y}] <- 1개의 배열, length = 2 // 단건으로 찍어내는 것이다. 착각함. //연산은 //x>0 && y>0 = 1 + "사분면" //x<0 && y>0 = 2 + "사분면" //x<0 && y<0 = 3 + "사분면" //x>0 && y<0 = 4 + "사분면" //메서드는 input x, y //계산 calculate(){} //output(){} int x; int y; String locationStr = "사분면"; int[] arr; int locationNum; Scanner sc = new Scanner(System.in); public Solution() { } void inputElement() { //System.out.println("몇개의 점을 찍으시겠습니까?"); //배열의 크기 설정 //arrSize = sc.nextInt(); System.out.println("좌표의 x값을 입력하십시오."); arr = new int[2]; while (true) { x = sc.nextInt(); if (x < -500 && x > 500) { System.out.println("좌표 값은 -500~500 사이의 값을 입력해주십시오."); continue; } arr[0] = x; break; } System.out.println("좌표의 y값을 입력하십시오."); while (true) { y = sc.nextInt(); if (y < -500 && y > 500) { System.out.println("좌표 값은 -500~500 사이의 값을 입력해주십시오."); continue; } arr[1] = y; break; } System.out.println("입력한 값은 [" + x + ", " + y + "] 입니다."); calculate(arr); } void calculate(int[] arr) { //x>0 && y>0 = 1 + "사분면" //x<0 && y>0 = 2 + "사분면" //x<0 && y<0 = 3 + "사분면" //x>0 && y<0 = 4 + "사분면" if (arr[0] > 0 && arr[1] > 0) { locationNum = 1; } else if (arr[0] < 0 && arr[1] > 0) { locationNum = 2; } else if (arr[0] < 0 && arr[1] < 0) { locationNum = 3; } else { locationNum = 4; } outputLocation(locationNum); } void outputLocation(int locationNum) { System.out.printf("입력한 좌표의 위치는 %d%s 입니다.", locationNum, locationStr); } }
Java
복사