각에서 0도 초과 90도 미만은 예각, 90도는 직각,
90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다.
각 angle이 매개변수로 주어질 때
예각일 때 1, 직각일 때 2, 둔각일 때 3,
평각일 때 4를 return하도록 solution 함수를 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120829
제한사항 : 0 < angle ≤ 180, angle은 정수
if(angle>0 && angle<=180){
}
각도에 따른 출력, 조건이 많다.
검색 ▶ Java 조건이 많을 때
else if 또는 switch 구문을 사용.
switch구문은 잘 모르겠어서, 우선 else if로 적용
0<angle< 예각,
angle==90 직각,
90<angle<180 둔각
angle==180 평각
class Solution {
public int solution(int angle) {
int answer = 0;
if(angle>0 && angle<=180){
if(angle>0 && angle<90){
answer=1;
}
else if(angle==90){
answer=2;
}
else if(angle>90 && angle<180){
answer=3;
}
else {
answer=4;
}
}
return answer;
}
}
중앙 값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때
가장 중앙에 위치하는 값을 의미합니다.
예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다.
정수 배열 array가 매개변수로 주어질 때,
중앙값을 return 하도록 solution 함수를 완성해보세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120811
class Solution {
public int solution(int[] array) {
int answer = 0;
int midarr = (array.length/2)+(array.length%2);
answer = array[midarr];
return answer;
}
}
테스트 1
입력값 〉 [1, 2, 3, 4, 5]
기댓값 〉 3
실행 결과 〉 실행한 결괏값 4이 기댓값 3과 다릅니다.
테스트 1에서 결과값이 4인것을 보고, 배열이 밀렸다는 걸 파악.
array의 배열은 [0]부터 시작한다는 것을 생각해냄.
배열의 요소가 [0]부터 시작한다는 걸 생각 못해서 뜬 오류😢
내가 세운 식 : answer=array[(array.length/2)+(array.length%2)];
class Solution {
public int solution(int[] array) {
int answer = 0;
int midarr = array.length/2;
answer = array[midarr];
return answer;
}
}
테스트 1
입력값 〉 [1, 2, 3, 4, 5]
기댓값 〉 3
실행 결과 〉 테스트를 통과하였습니다.
테스트 2
입력값 〉 [9, -1, 0]
기댓값 〉 0
실행 결과 〉 실행한 결괏값 -1이 기댓값 0과 다릅니다.
테스트1은 3으로 잘 출력되었으나, 테스트2는 -1이 나옴.
🤔 어? 왜 테스트 2의 기댓값이 -1이 아니라 0이지?!
여기서 깨달았다. 문제를 제대로 읽지 않았다는 것을..
" 중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미 "
아..배열을 순서대로 정렬한 후의 답을 요구하는구나.
검색 ▶ 배열의 정렬
Arrays.sort(array)메서드 사용해서 해결!
import java.util.Arrays;
class Solution {
public int solution(int[] array) {
int answer = 0;
java.util.Arrays.sort(array);
int midarr = array.length/2;
answer = array[midarr];
return answer;
}
}
if -else & else if & switch/case
if-else :
if 거짓 -> else 실행
else if :
if 거짓 -> else if 실행 -> else if 거짓 -> 다음 else if 실행 ->다음 else if 거짓-> else 실행
switch / case :
변수가 case의 값과 같을 때 '...' 실행
case마다 반드시 break 필요.
break가 없으면 참인 조건문에서 빠져나오지 못함.
그래서 참인 case를 만나도 다음 case를 계속 실행
switch(변수) {
case 1: ... // 변수가 1일 경우 실행
break;
case 2: ... // 변수가 2일 경우 실행
break;
...
default: ...// 변수가 1,2 모두 아닐 경우 실행
break;
}
Arrays.sort(array) 메서드
배열을 순서대로 정렬
Java.util.Arrays 활용 ( java=패키지, util=패키지, Arrays=클래스 )
다른 패키지 안의 클래스를 사용하기 위해서는 클래스 이름 앞에 패키지를 붙여야 함.
e.g. java.util.Arrays.sort(array);
매번 이렇게 쓰기 번거롭기때문에
파일의 앞머리에 import해서 파일에 적용.
e.g. import java.util.Arrays;
정렬범위 지정도 가능
Arrays.sort(arr, fromIndex, toIndex)
fromIndex(닫힌 구간), toIndex(열린 구간)
int[] intArr = new int[] {1,3,5,2,4};
Arrays.sort(intArr,2,5); // 출력 결과 intArr = {1,3,2,4,5}