728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/42889

 

코딩테스트 연습 - 실패율

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

programmers.co.kr

# 2019 카카오 신입 공채 1차 

 

# 3 개 시간 초과

def solution(N, stages):
    stages.sort()
    result = [ [i,0] for i in range(1,N+1)]
    
    def cnt(stages, k):
        sum = 0 
        for i in stages:
            if i >= k:
                sum += 1
        return sum 
       
    for i in range(N):
        if cnt(stages,i+1) != 0 :
            result[i][1] = stages.count(i+1) / cnt(stages,i+1)
        else :
            result[i][1] = 0 

    result = sorted( result, key= lambda x: x[1], reverse=True)
    
    answer = []
    for i in result:
        answer.append(i[0])
    return answer

채점 결과

정확성: 88.9

합계: 88.9 / 100.0

728x90
반응형
728x90
반응형
# 두 배열 A,B
# 최 대 k 번 바꿔치기 연산 가능 
# A의 모든 원소의 합이 최대가 되도록 하자. 

n,k = map(int, input().split())

# A의 작은 것과 B의 큰 것을 바꾸자. 

A = list(map(int, input().split()))
B = list(map(int, input().split()))

A.sort()
B.sort(reverse=True)

for i in range(k):
  if A[i]>B[i]:
    break
  else:
    A[i], B[i] = B[i], A[i]

print (sum(A))
728x90
반응형
728x90
반응형
n = int (input())

data = [] 
for i in range(n):
  data.append( list(input().split()))

def select(data) :
  return data[1]

data = sorted(data, key=select)

for i in range(len(data)):
  print(data[i][0],end=' ')
728x90
반응형

'알고리즘 > 이것이 취업을 위한 코딩테스트다' 카테고리의 다른 글

14-25. 실패율  (0) 2020.09.09
06-4. 두 배열의 원소 교체  (0) 2020.09.09
11-06. 무지의 먹방 라이브  (0) 2020.09.03
11-05. 볼링공 고르기  (0) 2020.09.03
04-2. 시각  (0) 2020.09.03
728x90
반응형

# 효율성 test 탈락

# 다익스트라, 힙 알고리즘 배우고 다시 풀어보기. 

https://programmers.co.kr/learn/courses/30/lessons/42891?language=python3

 

코딩테스트 연습 - 무지의 먹방 라이브

 

programmers.co.kr

# 1초에 1번씩 음식이 바뀐다. = 음식의 time -1 
# 만약 time이 0이면 다음 음식으로 넘어가야함. 이 때, 시간이 증가하면 안됨.. 
# 모든 음식이 0 이면 -1 반환하기 

def solution(food_times, k):
    answer = 0  # 현재 먹고 있는 음식의 번호 -1 
    zero = k  # 0 인 음식의 수 
    
    while zero :
        z = 0 
        for i in range(zero):   
            if food_times[answer] != 0 :
                food_times[answer] -= 1 
            else :
                z += 1 
                
            answer += 1 
            if answer == len(food_times):
                 answer = 0 
            if sum(food_times) == 0 : 
                 answer = -2
                 break
        if (answer == -2): break
        zero = z
    
    answer += 1 
    return answer
728x90
반응형
728x90
반응형
# 볼링공 고르기 

n, m = map(int,input().split())
data = list(map(int, input().split()))
# n은 공의 수, m 은 최대 무게 
# 서로 다른 무게를 골라야함.. 

cnt = 0 
next = 0 

for index in range(n):
  next = index +1 
  while next < n : 
    if data[index] != data[next]:
      cnt += 1
    next += 1
    
print (cnt)

 

# 볼링공의 최대 무게를 활용해 보자 

n, m = map(int,input().split())
data = list(map(int, input().split()))

array = [ 0 ] * 11 

for x in data:
  array[x] += 1 

cnt = 0 
for i in range(1, m+1 ):
  n -= array[i]
  cnt += array[i] * n 
    
print (cnt)
728x90
반응형
728x90
반응형
n = int(input())

count = 0 

for i in range(n+1):
  for j in range(60):
    for k in range(60):
      if '3' in str(i) + str(j) + str(k):
        count += 1 

print (count )
728x90
반응형
728x90
반응형
n = int(input())
data = list(input().split())

now = [1,1]

for i in data:
  if i == 'L':
    if now[1] != 1:
      now[1] -= 1 
  elif i == 'R':
    if now[1] != n:
      now[1] += 1 
  elif i == 'U':
    if now[0] != 1:
      now[0] -= 1 
  else :
    if now[0] != n:
      now[0] += 1 
      
print (now[0], now[1], end=' ')
728x90
반응형
728x90
반응형
eq = input() 

# 1. 두 수의 더하기가 큰지 곱하기가 큰지 더하기 

result = 0
l = len(eq)

if (l == 1):
  result = eq[0]
else :
  result = max ( int(eq[0])+int(eq[1]), int(eq[0])*int(eq[1]) )
  if (l < 2):
    print(result)
  else:
    for i in eq[2: ]:
      result = max(result+int(i), result*int(i))
    print(result)

 

 

# 더 간단하게 구현 가능 

# 지금 상태에서 최선의 경우 선택하기 잊지 말자

s = input()
data = list(map(int,s)) 

sum = 0

for i in data : 
  sum = max( sum+i, sum*i)

print(sum)
728x90
반응형
728x90
반응형
n, k = map(int, input().split())

cnt = 0 
while n != 1 : 
  if ( n % k == 0 ):
    n = n / k 
  else :
    n = n - 1
  cnt = cnt + 1

print (cnt)

 

+) 더 간결히 다듬기 

n, m = map(int,input().split())

count = 0 

while n > 1 : 
  count += 1 
  if n % m == 0 : n /= m 
  else : n -= 1

print (count)
728x90
반응형
728x90
반응형
# 가장 높은 숫자가 쓰인 카드 한 장 뽑기 
# 최소 숫자가 가장 큰 행을 선택해서 최소 숫자 출력하기? 
n, m = map(int, input().split())
# 필요한 것 : 행에서 가장 작은 숫자 찾기 / 그 중 가장 큰거 찾기 
min = []

i = 0 
while i < n:
  data = (list(map(int, input().split())))
  for j in range(m):
    tmp = data[0]
    if data[j] <= tmp:
      tmp = data[j]
  min.append(tmp)
  i = i + 1 

tmp = min[0]
for i in min:
  if i > tmp :
    tmp = i

print (i)

 

 

 

+ ) min/ max 함수를 사용하면 더 간단하게 작성 가능

for i in range(n):
  data = list(map(int, input().split()))
  min_value = 10001
  for a in data :
    min_value = min(min_value, a) 
  result = max(result, min_value) 

 

+ ) min / max 함수 사용 다른 방법

n, m = map(int, input().split() )
data = []
s_data = [] 

for i in range(n):
    data.append ( list(map(int, input().split() )))
    s_data.append ( min(data[i]) )

print( max(s_data) )
728x90
반응형

+ Recent posts