Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 원형 연결 구조 연결된 큐
- C언어 계산기 프로그램
- 범위 기반 for문
- getline()함수
- const l-value참조자
- 프로그래머스 배열만들기4
- 프로그래머스 푸드 파이트 대회
- c언어 괄호검사
- 주기억장치
- 알고리즘 조건
- r-value참조자
- 운영체제 기능
- 입출력 관리자
- 네트워크 결합
- C언어 덱
- string유형
- 백준 파이썬
- C언어 스택 연산
- const화
- 논리 연산
- 문자형 배열
- 문제해결 단계
- 회전 및 자리 이동 연산
- 괄호 검사 프로그램
- auto 키워드
- LAN의 분류
- IPv4 주소체계
- l-value참조자
- 유형 변환
- 값/참조/주소에 의한 전달
Archives
- Today
- Total
chyam
[프로그래머스 Lv2, python] - 순위 검색 본문
https://school.programmers.co.kr/learn/courses/30/lessons/72412
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
# 시간초과 풀이
def change(li):
new = []
for i in li:
i = i.replace("and"," ")
tmp = i.split()
new.append(tmp)
return new
def solution(info, query):
ans = []
new_info = change(info)
new_query = change(query)
for qu in new_query:
res = 0
for inf in new_info:
cnt = 0
for idx in range(4):
if qu[idx] == '-': # 모두 가능
cnt += 1
continue
if qu[idx] != inf[idx]: # 다를때
break
else:
cnt += 1
if cnt == 4:
if int(qu[4]) <= int(inf[4]): # 기준점수 만족?
res += 1
ans.append(res)
return ans
def solution(infos, queries):
answer = []
# 총 경우의 수 (108가지)
info_dict = {}
for lang in ['cpp', 'java', 'python', "-"]:
for job in ['backend', 'frontend', "-"]:
for career in ['junior', 'senior', "-"]:
for food in ['chicken', 'pizza', "-"]:
info_dict[lang + job + career + food] = []
# 지원자의 경우의 수
for info in infos:
info = info.split(" ")
for lang in [info[0], "-"]:
for job in [info[1], "-"]:
for career in [info[2], "-"]:
for food in [info[3], "-"]:
info_dict[lang + job + career + food].append(int(info[4]))
for key in info_dict.keys():
info_dict[key].sort() # 숫자 오름차순으로 정렬
for query in queries:
query = query.replace(" and ", "") # 다 붙여버리기. cppsenior 이런식으로
query = query.split() # 점수와 분리
query_score = int(query[1])
query = query[0]
# 점수
info_score = info_dict[query]
l = len(info_score)
tmp = l
low, high = 0, l - 1
while low <= high:
mid = (low + high) // 2
if query_score <= info_score[mid]:
tmp = mid
high = mid - 1
else:
low = mid + 1
answer.append(l - tmp)
return answer
'프로그래머스 > LV2' 카테고리의 다른 글
[프로그래머스 Lv2, python] - 완전범죄 (0) | 2025.05.22 |
---|---|
[프로그래머스 Lv2, python] - [PCCP 기출문제] 3번 / 충돌위험 찾기 (0) | 2025.05.14 |
[프로그래머스 Lv2, python] - 3 x n 타일링 (0) | 2025.05.12 |
[프로그래머스 Lv2, python] - 양궁대회 (0) | 2025.05.09 |
[프로그래머스 Lv2, python] - 혼자 놀기의 달인 (0) | 2025.05.08 |