문제>

PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 

이때 컬럼명은 MAX_PRICE로 지정해주세요.

 

풀이 1>

SELECT  PRICE AS 'MAX_PRICE'
FROM PRODUCT
ORDER BY PRICE DESC LIMIT 1

 

처음 MAX 를 어떻게 쓰는지 몰라서 ORDER BY 절을 통해 답을 도출하게 되었다.

후에 다른 사람들의 코드 작성을 통해

 

SELECT MAX(PRICE) AS MAX_PRICE
FROM PRODUCT

 

이렇게 할 수 있는 것을 확인 했다.

 

문제>

대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

--------------------

toLowerCase()

split()

equals()

--------------------

자주 헷갈리는거 복습

length

arrays(int[]. double[],String[])

-length는 배열의 길이를 알고자 할 때 사용된다.

 

length()

String related Object(String. StringBuilder etc)

- length()는 문자열의 길이를 알고자 할 때 사용된다.

 

size()

Collection Object(ArrayList, Set etc)

- size()는 컬렉션프레임워크 타입의 길이를 알고자 할 때 사용된다.

-----------------------


class Solution {
     boolean solution(String s) {
     int pCount = 0, yCount= 0;
     String[] array = s.toLowerCase().split("");

     for(int i=0; i < array.length; i++) {
     if ("p".equals(array[i])) {
     pCount++;
     } else if ("y".equals(array[i])) {
     yCount++;
     }
  }
    if (pCount != yCount) {
     return false;
    }
     return true;
  }
}

문제>

 


DOCTOR 테이블에서 진료과가 

흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요.

 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.

 

풀이>

 

날짜부분이 

기존 데이터는 2020-03-01 00:00:00 이런식으로 되어 있었다.

이부분을 DATE_FORMAT(HIRE_YMD, '%X-%m-%d') AS HIRE_YMD 이렇게 처리해야 원하는 출력을 

처리할 수 있다.

 

두번째. CS와 GS로만 구별해야 한다.

WHERE MCDP_CD IN ('CS','GS')

 

세번째 고용일자를 기준 내림차순, 같다면 이름을 기준으로 오름차순

ORDER BY HIRE_YMD DESC, DR_NAME 

 

 

코드>>>

 

SELECT DR_NAME
        ,DR_ID
        ,MCDP_CD
        ,DATE_FORMAT(HIRE_YMD, '%X-%m-%d') AS HIRE_YMD 
FROM DOCTOR
WHERE MCDP_CD IN ('CS','GS')
ORDER BY HIRE_YMD DESC, DR_NAME 

 

 

참고블로그

https://velog.io/@donghoim/MySQL-DATETIME-%EC%9B%90%ED%95%98%EB%8A%94-%EC%9C%A0%ED%98%95%EC%9C%BC%EB%A1%9C-%EB%B3%80%EA%B2%BD-YYMMDD

 

 

 

class Solution {
    
 public int[] solution(long n) {

 String str = String.valueOf(n);
 char[] s = str.toCharArray();
 int[] answer = new int[str.length()];

 

// 뒤집어서 입력
 for( int i = str.length()-1; i>=0; i --) {

 

 // char형을 int형으로 형변환하면 아스키코드값으려 변환되기 때문에 아스키코드값 48인 '0' 을빼줘야 한다
 answer[str.length()-1-i] = str.charAt(i)-'0';  
  }
 return answer;
 }
}

문제

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수

 

제한조건

n은 1이상, 50000000000000 이하인 양의 정수

 

입출력 예

n             return121         1443              -1

 

코드

 

class Solution {

 public long solution(long n) {

 long answer=0; 

Double x = Math.sqrt(n);         // Math.sqrt의 반환타입은 double 형으로 변수의 타입은 double로 선언해준다.

if( x == x.intValue()) {             // 실수형인 x의 값을 intValue(n) 메소드를 사용하면 x값을 정수 값으로 반환해준다

                                                 x는 실수값인 11.0을 출력된다. 이런 x 값을 x.intValue() 메서드를 사용해주면 정수형인 11

answer = (long) Math.pow(x +1, 2);

} else {           

answer = -1; } 

return answer; 

}

}

 

참고블로그https://codechacha.com/ko/java-math-pow/

 

Java - 거듭제곱 계산, Math.pow()

Math.pow()를 이용하여 거듭제곱을 계산할 수 있습니다. pow는 power를 의미하고, power의 뜻은 거듭제곱입니다. pow() 인자 두개, a와 b를 전달하며, a의 b 제곱이 리턴됩니다. 즉, a를 b번 곱한 값이 리턴

codechacha.com

https://crazykim2.tistory.com/m/599

> 제곱근(루트) 구하기 Math.sqrt() 개념 및 사용법 정리

+ Recent posts