문제

 

코딩테스트 연습 - 중성화 여부 파악하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

오랜만에 푼 SQL,,

SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed' 단어가 들어 있으면 중성화 한 동물로 'O'를 출력, 

중성화 하지 않은 동물은 'X'를 출력하면 되는 문제이다.

실행결과를 아래처럼 나오게 하면 된다.

 

 

풀이

SELECT ANIMAL_ID, NAME, 
    CASE WHEN (SEX_UPON_INTAKE LIKE '%Neutered%' 
            OR SEX_UPON_INTAKE LIKE '%Spayed%') 
            THEN 'O' ELSE 'X' END AS 중성화
 FROM ANIMAL_INS
 ORDER BY ANIMAL_ID

 

SELECT에 CASE 문을 사용하고 컬럼 별칭을 붙여 출력했다.

 

끝!

반응형

문제

 

코딩테스트 연습 - 두 개 뽑아서 더하기

정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한

programmers.co.kr

 

풀이

import collections as coll
def solution(numbers):
    answer = []
    dic = coll.defaultdict(int)
    numbers.sort()
    
    ln = len(numbers)
    
    for i in range(ln):
        for j in range(ln):
            if i==j: continue
            x=numbers[i]+numbers[j]
            if x not in dic:
                dic[x]=0
    
    answer = list(dic.keys())
    answer.sort()
    return answer

ㅋㅋ.. 3월에 코테를 왕창 볼 예정이어서 빡공해야 하는데

쉬운 문제만 골라 풀고있다 ㅠㅠㅠㅠ 흑흑 정신채리~~~

반응형

문제 

 

코딩테스트 연습 - 실패율

실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스

programmers.co.kr

2019 KAKAO BLIND RECRUITMENT 출제 문제이다.

뭔소린가 싶은데 문제에 친절하게 실패율 공식도 적혀있고 입출력 설명도 자세해서 그대로 짜면 된다.

 

  • 실패율은 다음과 같이 정의한다.
    • 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수

 

풀이

def solution(N, stages):
    answer = []
    score = collections.defaultdict(float)

    for i in range(1, N + 1):
        success = 0
        stop = 0
        cur = 0
        for x in stages:
            if x >= i:
                success +=1
            if x == i:
                stop +=1
        if success == 0 or stop == 0:
            score[i] = 0 # 0 나누기 예외처리
        else:
            score[i] = stop/success

    score = sorted(score.items(), key=lambda x: x[1], reverse=True)  # dict v기준 내림차순정렬

    for k in score:
        answer.append(k[0]) 

    return answer

위 입력값(N, stages)으로 실행 후 실패율 내림차순(reverse=True)으로 딕셔너리를 정렬했다.

(오름차순은 따로 지정안해줘도 됨~~~)

score 딕셔너리 정렬전/후, answer 리스트 출력

끝!

반응형

문제

 

코딩테스트 연습 - 없는 숫자 더하기

0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.

programmers.co.kr

 

풀이

import collections 

def solution(numbers):
    answer = 0
    dic = collections.defaultdict(int)
    
    for x in numbers:
        if str(x) not in dic:
            dic[str(x)]+=1
    
    for x in range(10):
        if str(x) not in dic:
            answer+=x
    
    return answer

입출력 예시

반응형

문제

(코딩테스트 연습 > 2021 카카오 채용연계형 인턴십 > 숫자 문자열과 영단어)

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

입출력 (s : str, result : int) 예시대로 영단어는 숫자로 변환하면 된다.

풀이

def solution(s: str) -> int: #인자 자료형, 메소드 반환형 명시
    result = s
    dict = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4',
            'five': '5', 'six': '6', 'seven': '7', 'eight': '8', 'nine': '9'}

    for item in dict.items():
        result = result.replace(item[0], item[1])

    return int(result)

파이썬 딕셔너리와 items()을 이용해 풀이했다.

반응형

문제

 

코딩테스트 연습 - 입양 시각 구하기(2)

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물

programmers.co.kr

0~23시간 동안 시간 별로 집계된 입양 횟수 조회하기 

 

 

Solution (MySQL)

with recursive num(h) as (
    select 0 as h
    union all
    select h+1
    from num
    where h<23
)

select t1.h as HOUR, count(HOUR(t2.datetime)) as COUNT
from num as t1
left join animal_outs as t2
on t1.h=hour(t2.datetime)
group by t1.h

 

 

결과

 

'SQL에서 재귀는 처음 써봤당 신기,,

반응형

문제

 

코딩테스트 연습 - 헤비 유저가 소유한 장소

PLACES 테이블은 공간 임대 서비스에 등록된 공간의 정보를 담은 테이블입니다. PLACES 테이블의 구조는 다음과 같으며 ID, NAME, HOST_ID는 각각 공간의 아이디, 이름, 공간을 소유한 유저의 아이디를

programmers.co.kr

 

 

Solution (MySQL)

SELECT id,name,p2.host_id from places as p1
inner join (
    select host_id, count(host_id) as cnt from places
    group by host_id
    having cnt>=2
)as p2
on p1.host_id=p2.host_id
order by ID

 

결과

 

반응형

문제 :

 

코딩테스트 연습 - 체육복

점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번

programmers.co.kr

 

Solution 

import copy
def solution(n, lost, reserve):
    answer = 0
    lost.sort()
    reserve.sort()
    
    for x in copy.deepcopy(lost):
        for y in copy.deepcopy(reserve):
            if x==y:
                lost.remove(x)
                reserve.remove(y)
                break
        
    for x in copy.deepcopy(lost):
        for y in copy.deepcopy(reserve):
            if abs(x-y)==1:
                lost.remove(x)
                reserve.remove(y)
                break

    answer=n-len(lost)
    return answer

오늘 출근길에 푼 문제,,

list를 remove하면서 for문을 돌렸더니 제대로 for문이 돌지 않았다.

copy 라이브러리의 deepcopy를 이용했더니 해결,,

 

계속 75점 맞다가 lost와 reserve 학생이 같은 경우를 먼저 제거해주어야 한다는 걸 알게 되었다..!...!!!

Level 1 따린데 자존감 내려간다 따흐흑

반응형

문제 : 

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

 

Solution

def solution(answers):
    answer = []
    s1=[1,2,3,4,5]
    s2=[2,1,2,3,2,4,2,5]
    s3=[3,3,1,1,2,2,4,4,5,5]
    
    c1=c2=c3=0 #맞은 문제 수
    p1=p2=p3=0 #위치
    
    for i in range(len(answers)):
        if answers[i]==s1[p1]:c1+=1
        if answers[i]==s2[p2]:c2+=1
        if answers[i]==s3[p3]:c3+=1
        
        p1+=1
        p2+=1
        p3+=1
        
        if p1==len(s1):p1=0
        if p2==len(s2):p2=0
        if p3==len(s3):p3=0
    
    maxscore=max(c1,c2,c3)
    if c1==maxscore:answer.append(1)
    if c2==maxscore:answer.append(2)
    if c3==maxscore:answer.append(3)
    
    return answer

반응형

문제 : 

 

코딩테스트 연습 - K번째수

[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]

programmers.co.kr

오늘 재택근무 중에 팀장님한테 급 대면면담 호출을 받았다,, ^^ 행복하다...

 

전철에 사람이 정말 없어서 노트북을 꺼내 Level 1 문제를 슬렁 풀어봤다...

 

Solution

def solution(array, commands):
    answer = []
    
    for a in range(len(commands)):
        
        i=commands[a][0]
        j=commands[a][1]
        k=commands[a][2]
        tmp=array[i-1:j] #slice
        tmp.sort()
        answer.append(tmp[k-1])
                
    return answer

슬라이스로 풀었당,, 

반응형

+ Recent posts