코테 준비 16일차_8/27

Jieun·3일 전

코딩테스트 준비

목록 보기
9/10
  1. 추억 점수
    그리워 하는 사람이랑 점수를 매칭해서 사진에 있는 배열마다 점수 더해서 배열 만들어서 출력하면 될거같음
    그리워 하는 사람마다 if문을 작성해야 되나, 케이스문 써도 될거같은데 근데 그러면 while에 넣을 값이 없음
    우선 그리워라는 사람이랑 점수 매칭해야 될거같은데
  • 초기 정답
class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        int[] answer = {};
        for(int i=o;i<photo.length;i++) {
            if(photo.[i][])
        }
        if()
        return answer;
    }
}
  • AI 정답
    이름과 점수를 Map에 매칭 -> 결과를 담을 배열 초기화 -> 사진별로 추억 계산 -> 출력

  • 제출 정답

import java.util.Map;
import java.util.HashMap;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        Map<String, Integer> scope = new HashMap <>();
        for(int i =0;i<name.length;i++) {
            scope.put(name[i], yearning[i]);
        }
        
        int[] answer = new int[photo.length];
        for(int i=0;i<photo.length;i++) {
            int score = 0;
            for(String person : photo[i]) {
                score += scope.getOrDefault(person, 0);
            }
            answer[i] = score;
        }
    
        return answer;
    }
}
  1. 둘만의 암호
    문자열 s에 있는 글자를 index만큼 뒤에 있는 알파벳을 가져오는데 skip에 있는 문자열을 빼고 가져 와야됨
    z가 넘어가면 다시 a로 돌아감
  • 초기 정답
class Solution {
    public String solution(String s, String skip, int index) {
        String answer = "";
        for(int i=0;i<s.length();i++) {
            
}
        return answer;
    }
}
  • AI 정답
    스킵에 포함되지 않은 알파벳만 리스트에 담기 -> s의 각 문자를 변환하기(몇번째 인덱스에 있는지 확인, index만큼 뒤로 이동)

  • 최종 정답

import java.util.Map;
import java.util.HashMap;

class Solution {
    public int[] solution(String[] name, int[] yearning, String[][] photo) {
        Map<String, Integer> scope = new HashMap <>();
        for(int i =0;i<name.length;i++) {
            scope.put(name[i], yearning[i]);
        }
        
        int[] answer = new int[photo.length];
        for(int i=0;i<photo.length;i++) {
            int score = 0;
            for(String person : photo[i]) {
                score += scope.getOrDefault(person, 0);
            }
            answer[i] = score;
        }
    
        return answer;
    }
}

  1. 12세 이하인 여자 환자 목록 출력하기
  • 초기 정답
SELECT PT_NAME, PT_NO, GEND_CD, AGE, TLNO FROM PATIENT WHERE AGE <= 12 AND GEND_CD = "W" ORDER BY AGE DESC, PT_NAME ASC

전화번호(TLNO)가 없는 경우 'NONE'으로 출력해야 하는 조건은 COALESCE 함수나 IFNULL 함수로 사용하면 가능

  • 최종 정답
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE') FROM PATIENT WHERE AGE <= 12 AND GEND_CD = 'W' ORDER BY AGE DESC, PT_NAME ASC
  1. 가격이 제일 비싼 식품의 정보 출력하기
  • 초기 정답
SELECT PRODUCT_ID,PRODUCT_NAME,PRODUCT_CD,CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT
  • AI 정답
    MAX(PRICE)를 쓰면 최고 가격 하나는 잘 가져오지만 다른 컬럼은 그냥 첫번째 행 데이터를 가져옴
  1. ORDER BY + LIMIT 사용해서 가격 내림차순으로 정렬 후 1개만 조회하는 방법
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
LIMIT 1;
  1. 서브쿼리를 사용한 방법
SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICE
FROM FOOD_PRODUCT
WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
  • 최종 정답
SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글