티스토리 뷰

반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import bisect
def solution(info, query):
    infos=[]
    querys=[]
    lang={'java':0,'python':1,'cpp':2,'-':3}
    job={'backend':0,'frontend':1,'-':2}
    stage={'junior':0,'senior':1,'-':2}
    soul = {'pizza':0,'chicken':1,'-':2}
    result=[[[[ [] for soul in range(3)] for stage in range(3)]for job in range(3)]for lang in range(4)]
    vs=[0 for _ in range(len(query))]              
    for x in info:
        xx=(x.split())
        for lan in [xx[0],'-']:
            for jo in [xx[1],'-']:
                for stg in [xx[2],'-']:
                    for sul in [xx[3],'-']:
                        result[lang[lan]][job[jo]][stage[stg]][soul[sul]].append(int(xx[4]))
    for a in range(4):
        for b in range(3):
            for c in range(3):
                for d in range(3):
                    result[a][b][c][d].sort()
    for i,y in enumerate(query):
        val = y.replace('and',' ')
        yy=val.split()
        vs[i]=(len(result[lang[yy[0]]][job[yy[1]]][stage[yy[2]]][soul[yy[3]]])-bisect.bisect_left(result[lang[yy[0]]][job[yy[1]]][stage[yy[2]]][soul[yy[3]]],int(yy[4])))
    return vs
cs

문제 접근 방법은 우선 언어와 직업,경력 그리고 소울푸드는 정해져 있다는 조건에 대하여 다가갔다.

각각의 값들을 사전형식으로 저장한다. 그 이유는 리스트 형식으로 저장할 때 사용하기 쉽게 하기 위해서다.

6번째 줄부터 8번째 줄까지가 그러하다.

9번 째 줄은 각각의 경우에 적합한 지원자를 넣는 리스트이다.

11번째 줄 부터 28번째 줄은 각각의 경우에 따른 값을 삽입하는 과정이다.

그리고 삽입된 값들을 정렬을 한다. 그 이유는 나중에 lower_bound를 통해 일정 기준치를 도달하지 못한 값들을 처내는 과정에서 정렬된 리스트들이 요구되기 때문이다.

그래서 31번째 줄부터 35번째 줄까지는 그러한 과정을 적었다.

나머지는 이제 지원자격에 대한 쿼리문을 필요한 데이터만 추출한 다음에 계산하고 리턴할 리스트에 삽입을 한다.

프로그래머스에 들어가시면 저보다 좋은 풀이코드들을 보실 수 있습니다.

문제: programmers.co.kr/learn/courses/30/lessons/72412

 

코딩테스트 연습 - 순위 검색

["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt

programmers.co.kr

 

yy=val.split()

문제 접근 방법은 우선 언어와 직업,경력 그리고 소울푸드는 정해져 있다는 조건에 대하여 다가갔다.

각각의 값들을 사전형식으로 저장한다. 그 이유는 리스트 형식으로 저장할 때 사용하기 쉽게 하기 위해서다.

6번째 줄부터 8번째 줄까지가 그러하다.

9번 째 줄은 각각의 경우에 적합한 지원자를 넣는 리스트이다.

11번째 줄 부터 28번째 줄은 각각의 경우에 따른 값을 삽입하는 과정이다.

그리고 삽입된 값들을 정렬을 한다. 그 이유는 나중에 lower_bound를 통해 일정 기준치를 도달하지 못한 값들을 처내는 과정에서 정렬된 리스트들이 요구되기 때문이다.

그래서 31번째 줄부터 35번째 줄까지는 그러한 과정을 적었다.

나머지는 이제 지원자격에 대한 쿼리문을 필요한 데이터만 추출한 다음에 계산하고 리턴할 리스트에 삽입을 한다.

프로그래머스에 들어가시면 저보다 좋은 풀이코드들을 보실 수 있습니다.

문제: programmers.co.kr/learn/courses/30/lessons/72412

 

코딩테스트 연습 - 순위 검색

["java backend junior pizza 150","python frontend senior chicken 210","python frontend senior chicken 150","cpp backend senior pizza 260","java backend junior chicken 80","python backend senior chicken 50"] ["java and backend and junior and pizza 100","pyt

programmers.co.kr

 

yy=val.split()

반응형

'알고리즘 > 프로그래머스' 카테고리의 다른 글

2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼  (0) 2021.02.01
2020 KAKAO BLIND RECRUITMENT문자열 압축  (0) 2021.01.30
실패율  (0) 2021.01.27
비밀지도  (0) 2021.01.27
2020카카오 인턴십 문제 : 키패드 누르기  (0) 2021.01.26
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함