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
- softeer
- 토이프로젝트
- 오블완
- cim
- 현대자동차
- 프로그래머스
- 티스토리챌린지
- Baekjoon
- Python
- 백준
- 스마트팩토리
- 파이썬
- programmers
- 자바스크립트
- 힙큐
- Java
- 딥러닝
- GAN
- alogorithm
- 자바
- boj
- cs공부
- Algorithm
- JavaScript
- re_lunchu
- 알고리즘
- heapq
- 소프티어
- 현대
- 탐욕법
Archives
- Today
- Total
eaz_coding
[Softeer] 자동차 테스트 본문
문제
요약
N개의 수로 이루어진 리스트가 주어진다.
한 줄에 하나씩 값을 하나 입력할 때, 해당 값이 리스트에서 중앙값이 될 수 있는 경우의 수는?
단, 값은 세개씩만 비교한다. Ex) 1 2 3 4 5 -> 1 2 3 / 1 2 4 / ...
원본
https://softeer.ai/practice/6247
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
풀이
오랜만에 온전히 내힘으로 푼듯한 코드
처음 풀이 방법 생각부터 틀린 부분 찾는 것까지 순조로웠다.
이진탐색은 이제 어디가서 이해했다고 말할 수 있겠다 ㅠㅜ 감격스러웡
풀이 아이디어
이진 탐색으로 값이 있는지 찾으면 해당 인덱스는 앞에 있는 값의 개수이고,
n-1에서 인덱스를 뺀수는 뒤에 있는 값의 개수니까 곱하면 되겠다.
여기서 한번 실수 했던 게, 값이 없을 때 마지막에 0을 리턴해주는 것이 아니라
처음에 값 not in lst 로 했다가 시간초과가 발생했다. 마지막까지 주의할것!
import sys
input = sys.stdin.readline
n, q = map(int, input().split())
lst = sorted(list(map(int, input().split())))
def binary_search(i):
lw, up = 0, n-1
while lw <= up:
mid = (lw+up)//2
if lst[mid] < i:
lw = mid + 1
elif lst[mid] > i:
up = mid - 1
else:
return mid
return 0
for _ in range(q):
i = int(input())
a = binary_search(i)
print(a*(n-1-a))
'eaz_algorithm' 카테고리의 다른 글
[Softeer] 동계 테스트 시점 예측 (2) | 2024.03.18 |
---|---|
[Softeer] 스마트 물류 (0) | 2024.03.15 |
[Softeer] 조립라인 (0) | 2024.03.12 |
[Softeer] 순서대로 방문하기 (0) | 2024.03.11 |
[Baekjoon] 휴게소 세우기 (0) | 2024.03.08 |