반응형

🗓️ 문제 설명

  • ANIMAL_INS테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
  • ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE
  • ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다.
  • ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.
  • ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.
NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_OUTCOME VARCHAR(N) FALSE

 

문제

  • 천재지변으로 인해 일부 데이터가 유실되었습니다.
  • 입양을 간 기록은 있는데, 보호소에 들어온 기록은 없는 동물의 ID와 이름을 ID순으로 조회하는 SQL문을 작성해주세요.
  • 문제 예시

ANIMAL_INS

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A352713 Cat 2017-04-13 16:29:00 Normal Gia Spayed Female
A350375 Cat 2017-03-06 15:01:00 Normal Meo Neutered Male

ANIMAL_OUTS

ANIMAL_ID ANIMAL_TYPE DATETIME NAME SEX_UPON_OUTCOME
A349733 Dog 2017-09-27 19:09:00 Allie Spayed Female
A352713 Cat 2017-04-25 12:25:00 Gia Spayed Female
A349990 Cat 2018-02-02 14:18:00 Spice Spayed Female
  • 출력 예시
ANIMAL_ID NAME
A349733 Allie
A349990 Spice

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 당구대의 가로 길이 m, 세로 길이 n과 쳐야 하는 공이 놓인 위치 좌표를 나타내는 두 정수 startX, startY, 그리고 매 회마다 목표로 해야하는 공들의 위치 좌표를 나타내는 정수 쌍들이 들어있는 2차원 정수배열 balls가 주어집니다. 
  • "원쿠션" 연습을 위해 공을 적어도 벽에 한 번은 맞춘 후 목표 공에 맞힌다고 할 때, 각 회마다 공이 굴러간 거리의 최솟값의 제곱을 배열에 담아 반환하세요.
  • 단, 공이 벽에 부딪힐 때, 진행 방향은 항상 입사각과 반사각이 동일하며, 만약 꼭짓점에 부딪힐 경우 진입 방향의 반대 반향으로 공이 진행됩니다. 
  • 제한 사항
    • 3 ≤ m, n ≤ 1000
    • 0 < startX < m
    • 0 < startY < n
    • 2 ≤ balls의 길이 ≤ 1000
    • balls의 원소는 [a, b] 형태
      • a, b는 머쓱이가 맞춰야 할 공이 놓인 좌표를 의미
      • 0 < a < m, 0 < b < n
      • (a, b) = (startX, startY)인 입력은 들어오지 않음
  • 입출력 예시
m n startX startY balls result
10 10 3 7 [[7, 7], [2, 7], [7, 3]] [52, 37, 116]

 

💻 코드

최종 코드

  • 수정사항
    >> 동일한 선상에서 가로 혹은 세로로 원쿠션했을 때의 거리를 추가

 

코드 풀이

 

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 케이스에서 실패 존재

 

반응형
반응형

🗓️ 문제 설명

  • ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
  • ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

 

문제

  • 입양 게시판에 동물 정보를 게시하려 합니다.
  • 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요.
  • 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
  • 문제 예시
ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A350276 Dog 2017-08-13 13:50:00 Normal Jewel Spayed Female
A350375 Dog 2017-03-06 15:01:00 Normal Meo Neutered Male
A368930 Dog 2014-06-08 13:20:00 Normal NULL Spayed Female
  • 출력 예시
ANIMAL_TYPE NAME SEX_UPON_INTAKE
Cat Jewel Spayed Female
Cat Meo Neutered Male
Dog No name Spayed Female

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • S사에서는 각 부서에 필요한 물품을 지원해주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다.
  • 전체 예산이 정해져 있기 때문에 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
  • 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다.
  • 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 반환하세요.
  • 제한 사항
    • d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하
    • d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100000 이하의 자연수
    • budget은 예산을 나타내며, 1 이상 10000000 이하의 자연수
  • 입출력 예시
d budget result
[1, 3, 2, 5, 4] 9 3
[2, 2, 3, 3] 10 4

 

💻 코드

최종 코드

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 2번줄 : 주어진 d를 정렬
  2. 3번줄 : 반복문을 돌면서 d의 총합과 예산을 비교
  3. 4번줄 : d의 총합이 크다면 d의 마지막 값을 삭제
  4. 5번줄 : d의 총합이 예산보다 작다면 d의 길이를 반환

 

반응형
반응형

🗓️ 문제 설명

  • ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보가 담겨있습니다.
  • ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

 

문제

  • 보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다.
  • 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다.
  • 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요.
  • 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.
  • 문제 예시
ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A355753 Dog 2015-09-10 13:14:00 Normal Elijah Neutered Male
A373219 Cat 2014-07-29 11:43:00 Normal Ella Spayed Female
A382192 Dog 2015-03-13 13:14:00 Normal Maxwell2 Intact Male
  • 출력 예시
ANIMAL_ID NAME 중성화
A355753 Elijah O
A373219 Ella O
A382192 Maxwell2 X

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 나만의 카카오 성격 유형 검사지를 만드려고 합니다.
  • 성격 유형 검사는 4개의 지표에 따라 두 유형 중 하나로 결정됩니다.
1번 지표 라이언형(R) 튜브형(T)
2번 지표 콘형(C) 프로도형(F)
3번 지표 제이지형(J) 무지형(M)
4번 지표 어피치형(A) 네오형(N)
  • 검사지에는 총 n개의 질문이 있고, 각 질문에는 (매우 비동의, 비동의, 약간 비동의, 모르겠음, 약간 동의, 동의, 매우 동의)와 같은 7개의 선택지가 있습니다.
  • 각 선택지는 고정적인 크기의 점수를 가집니다.
  • 매우 동의와 매우 비동의는 3점, 동의와 비동의는 2점, 약간 동의와 약간 비동의는 1점, 모르겠음은 0점입니다.
  • 검사 결과는 모든 질문의 성격 유형 점수를 더하여 각 지표에서 더 높은 점수를 받은 성격 유형이 검사자의 성격 유형이라고 판단합니다. 단, 하나의 지표에서 각 성격 유형 점수가 같으면 사전순으로 빠른  성격 유형을 검사자의 성격 유형이라고 판단합니다.
  • 질문마다 판단하는 지표를 담은 1차원 문자열 배열 survey와 검사자가 각 질문마다 선택한 선택지를 담은 1차원 정수 배열 choices가 매개변수로 주어집니다.
  • 검사자의 성격 유형 검사 결과를 지표 번호 순서대로 반환하세요.
  • 제한 사항
    • 1 ≤ survey의 길이 ≤ 1000
      • survey의 원소는 'RT', 'TR', 'FC', 'CF', 'MJ', 'JM', 'AN', 'NA' 중 하나
      • survey[i]의 첫번재 캐릭터는 i+1번 질문의 비동의 관련 선택지를 선택하면 받는 성격 유형
      • survey[i]의 두번째 캐릭터는 i+1번 질문의 동의 관련 선택지를 선택하면 받는 성격 유형
    • choices의 길이 = survey의 길이
      • choices[i]는 검사자가 선택한 i+1번째 질문의 선택지
      • 1 ≤ choices의 원소 ≤ 7
      • 1은 매우 비동의, 7은 매우 동의를 의미
  • 입출력 예시
survey choices return
['AN', 'CF', 'MJ', 'RT', 'NA'] [5, 3, 2, 7, 5] 'TCMA'
['TR', 'RT', 'TR'] [7, 1, 3] 'RCJA'

 

💻 코드

최종 코드

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • USED_GOODS_BOARD테이블은 중고거래 게시판 정보를 담고 있습니다.
  • BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS는 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다.
Column name Type Nullable
BOARD_ID VARCHAR(5) FALSE
WRITER_ID VARCHAR(50) FALSE
TITLE VARCHAR(100) FALSE
CONTENTS VARCHAR(1000) FALSE
PRICE NUMBER FALSE
CREATED_DATE DATE FALSE
STATUS VARCHAR(10) FALSE
VIEWS NUMBER FALSE

 

문제

  • USED_GOODS_BOARD 테이블에서 2022년 10월 5일에 등록된 중고거래 게시물의 게시글 ID, 작성자 ID, 게시글 제목, 가격, 거래상태를 조회하는 SQL문을 작성해주세요.
  • 거래상태가 SALE이면 판매중, RESERVED이면 예약중, DONE이면 거래완료 분류하여 출력하고, 결과는 게시글 ID를 기준으로 내림차순 정렬해주세요.
  • 문제 예시
BOARD_ID WRITER_ID TITLE CONTENTS PRICE CREATED_DATE STATUS VIEWS
B0007 s2s2123 커피글라인더 새상품처럼 깨끗합니다. 7000 2022-10-04 DONE 210
B0008 hong02 자전거 판매합니다 출퇴근용으로 구매했다가 사용하지 않아서 내놔요 40000 2022-10-04 SALE 301
B0009 yawoong67 선반팝니다 6단 선반. 환불 반품 안됩니다. 12000 2022-10-05 DONE 202
B0010 keel1990 철제선반 5단 철제선반 5단 조립식 팜 10000 2022-10-05 SALE 194
  • 출력 예시
BOARD_ID WRITER_ID TITLE PRICE STATUS
B0010 keel1990 철제선반5단 10000 판매중
B0009 yawoong67 선반 팝니다 12000 거래완료

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 숫자나라 기사단의 각 기사에게는 1부터 number까지 번호가 지정되어 있습니다.
  • 각 기사는 자신의 기사 번호의 약수 개수가 해당하는 공격력을 가진 무기를 구매하려 합니다.
  • 단, 이웃나라와의 협약에 의해 공격력의 제한수치를 정하고, 제한수치보다 큰 공격력을 가진 무기를 구매해야 하는 기사는 협약 기관에서 정한 공격력을 가지는 무기를 구매해야 합니다.
  • 무기를 만들 때는 무기의 공격력 1당 1kg의 철이 필요합니다.
  • 기사단원의 수를 나타내는 정수 number와 이웃나라와 협약으로 정해진 공격력의 제한수치를 나타내는 정수 limit와 제한수치를 초과한 기사가 사용할 무기의 공격력을 나타내는 정수 power가 주어졌을 때, 필요한 철의 무게를 반환하세요.
  • 제한 사항
    • 1 ≤ number ≤ 100000
    • 2 ≤ limit ≤ 100
    • 1 ≤ power ≤ limit
  • 입출력 예시
number limit power result
5 3 2 10
10 3 2 21

 

💻 코드

최종 코드

  • 수정사항
    >> 약수를 반복문 숫자의 제곱근까지만 구하고, 약수의 개수에 2를 곱해줌
    >> 반복문의 숫자가 제곱수일 경우 약수의 개수 * 2에서 1을 빼줌

 

코드 풀이

 

 

⚙️ 시행착오

1차 시도

더보기
  • 테스트 결과 : 시간초과 발생

 

 

반응형
반응형

🗓️ 문제 설명

  • ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
  • ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

 

문제

  • 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL문을 작성해주세요.
  • 이름이 NULL인 경우는 집계하지 않으며, 중복되는 이름은 하나로 칩니다.
  • 문제 예시
ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A562649 Dog 2014-03-20 18:06:00 Sick NULL Spayed Female
A412626 Dog 2016-03-13 11:17:00 Normal *Sam Neutered Male
A563492 Dog 2014-10-24 14:45:00 Normal *Sam Neutered Male
A513956 Dog 2017-08-14 11:54:00 Normal *Sweetie Spayed Female
  • 출력 예시
count
2

 

💻 코드

최종 코드

  • 실행 결과

 

코드 풀이

 

반응형
반응형

🗓️ 문제 설명

  • 수많은 마라톤 선수들이 마라톤에 참여하여 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.
  • 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 반화하세요.
  • 제한 사항
    • 마라톤 참가자 수는 1명 이상 100,000명 이하
    • completion의 길이 = participant의 길이 - 1
    • 참가자의 이름은 1개 이상 ~ 20개 이하의 알파벳 소문자로 이루어짐
    • 참가자 중 동명이인이 있을 수 있음
  • 입출력 예시
participant completion return
['leo', 'kiki', 'eden'] ['eden', 'kiki'] 'leo'
['marina', 'josipa', 'nikola', 'vinko', 'filipa'] ['josipa', 'filipa', 'marina', 'nikola'] 'vinko'
['mislav', 'stanko', 'mislav', 'ana'] ['stanko', 'ana', 'mislav'] 'mislav'

 

💻 코드

최종 코드

  • 수정사항
    >> 딕셔너리 컴프리헨션에서 반복문을 꺼내 정렬된 참가자와 완주자의 이름을 일대일 비교

 

코드 풀이

 

다른 사람 풀이

더보기

풀이 1번

  1. 5번줄 : collections에서 Counter를 불러와 이름의 개수의 차이를 구함
  2. 6번줄 : 5번줄에서 차이값이 1인 경우만 key 값이 남아있기 때문에 key값을 반환

풀이 2번

  1. 3번줄 : 마지막에 반환할 키값을 저장하는 변수 생성
  2. 4번줄 : 참가자의 해시값:이름을 저장할 딕셔너리 생성
  3. 5~7번줄 : 참가자를 한명씩 꺼내며 해시값으로 dic에 저장하고, temp에 해시값을 더해줌
  4. 8~9번줄 : 완주자를 한명씩 꺼내 temp에서 해시값을 빼줌
                 >> 완주자의 해시값을 반복적으로 빼면 최종적으로 하나의 해시값만 남음
  5. 10번줄 : 해시값에 대한 value를 저장하여 반환

 

⚙️ 시행착오

1차 시도

더보기
  • 정확성 테스트 : 런타임 에러 1개, 실패 1개
  • 효율성 테스트 : 시간초과 1개

 

2차 시도

더보기
  • 수정사항
    >> 5번줄에 딕셔너리 key값을 participant와 completion 내에 있는 이름의 개수 차이로 변경
  • 효율성 테스트 : 시간초과 1개

 

알게된 점

더보기
  • collections.Counter() : Counter함수를 통한 뺄셈이 가능
  • hash() : 해시값을 생성이 가능
반응형

+ Recent posts