코테 준비 18일차_9/2

Jieun·2026년 9월 2일

코딩테스트 준비

목록 보기
11/24
  1. 조건에 맞는 도서와 저자 리스트 출력하기
  • 초기 정답
SELECT BOOK_ID, AUTHOR_NAME, PUBLISHED_DATE FROM BOOK, AUTHOR WHERE CATEGORY = '경제' GROUP BY AUTHOR_ID ORDER BY AUTHOR_ID
  • 최종 정답
SELECT B.BOOK_ID, A.AUTHOR_NAME, B.PUBLISHED_DATE FROM BOOK B JOIN AUTHOR A ON B.AUTHOR_ID = A.AUTHOR_ID  WHERE CATEGORY = '경제'  ORDER BY B.AUTHOR_ID

JOIN 조건 누락 : 테이블 간 연결조건이 누락되었음

  1. 경기도에 위치한 식품창고 목록 출력하기
  • 초기 정답
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, ISNULL(FREEZER_YN) = 'N' FROM FOOD_WAREHOUSE 
  • 최종 정답
SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '경기도%' ORDER BY WAREHOUSE_ID

ISNULL 문법 오용: ISNULL(FREEZER_YN) = 'N' 문법은 MySQL에서 FREEZER_YN이 NULL인지 여부를 0 또는 1로 반환하는 비교문입니다. NULL 값을 'N'으로 치환하라는 의도라면 IFNULL(FREEZER_YN, 'N') AS FREEZER_YN 또는 COALESCE(FREEZER_YN, 'N') AS FREEZER_YN을 써야 합니다.
WHERE 조건(경기도) 누락: 문제 조건 중 "경기도에 위치한" 창고만 조회하는 WHERE ADDRESS LIKE '경기도%' 조건이 빠져 있습니다.

  1. 완주하지 못한 선수
  • 최종 정답
import java.util.HashMap;
class Solution {
    public String solution(String[] participant, String[] completion) {
        HashMap<String, Integer> map = new HashMap<>();
        for(String p : participant) {
            map.put(p, map.getOrDefault(p, 0)+1);
        }
        for(String c :completion ) {
             map.put(c, map.get(c)-1);
        }
        for(String key : map.keySet()) {
            if(map.get(key) != 0) {
                return key;
            }
        }
        return "";
    
    }
}

1) HashMap 생성
2) 참가자(participant) 카운트 : 동명이인 있을 수 있으니 기존값에 +1 하는게 핵심
3) 완주자(completion) 차감
4) 완주하지 못한 선수 찾기 : map.keySet()을 돌며 값이 0이 아닌 사람 이름 찾아서 return

  1. 가장 가까운 같은 글자
    문자열이랑 인덱스를 map으로 저장해서 출력하면 되려나?
import java.util.HashMap;
class Solution {
    public int[] solution(String s) {
        int [] answer = new int [s.length()];
        HashMap<Character, Integer> map = new HashMap<>();
        for(int i=0;i<s.length();i++) {
            char ch = s.charAt(i);
            if(!map.containsKey(ch)) {
                answer[i] = -1;
            } else {
                answer[i] =i- map.get(ch);
            }
            map.put(ch,i);
        }
      
        return answer;
    }
}
  • 다른 정답
import java.util.*;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        HashMap<Character,Integer> map = new HashMap<>();
        for(int i=0; i<s.length();i++){
            char ch = s.charAt(i);
            answer[i] = i-map.getOrDefault(ch,i+1);
            map.put(ch,i);
        }
        return answer;
    }
}
profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글