▶ 코드

 

# 문제     : 서류,면접 등수가 모두 자기보다 낮은게 있으면 OUT

# 아이디어 : 1 .서류등수 기준으로 오름차순 한 다음,
#            2. 서류등수 1등인사람의 면접점수를 min값으로 두고,
#            3. 서류등수가 올라가는 순서로 되어있으므로, 그 다음번 원소의 면접등수는 앞에꺼보다 무조건 높은등수여야만 한다.
#            4. (따라서 min값을 계속 갱신해 나가야 한다)


T = int(input())

for _ in range(T):
    
    n = int(input())
    s = [0]*(n+1)
    
    # 입력
    for i in range(n):
        a, b = map(int, input().split())
        s[a] = b
    #print(s)

    min_number = s[1]           # 서류등수 1등인 사람의 면접등수 

    c = 0
    for i in range(2, len(s)):  # 서류점수 2등~ n등까지 차례대로 면접등수 검사 
        if s[i] > min_number:
            #print('걸러진것->(', i, s[i], ')')
            c += 1
        else:
            min_number = s[i]
    print(n - c)
    

# 정답 : https://pacific-ocean.tistory.com/343



'''시간초과'''
'''
#t=[[3,2],[1,4],[4,1],[2,3],[5,5]]
#t=[[3,6],[7,3],[4,2],[1,4],[5,7],[2,5],[6,1]],
# 배열에서 둘다 높아지는 경우 OUT

T = int(input())

for _ in range(T):
    n = int(input())
    t = []
    for i in range(n):
        t.append(list(map(int, input().split())))
        
    t1 = sorted(t, key=lambda x: x[0])
    t2 = sorted(t1, key=lambda x: x[1])
    #print(t2)

    c = 0
    i = 0
    j = 1
    length = len(t2)

    while j < len(t2):
        if t2[i][0] > t2[j][0] or t2[i][1] > t2[j][1]:
            i += 1
            j += 1
        else:
            #print('삭제할것->', t2[j])
            t2 = t2[:j] + t2[j+1:]
            #print('t2다시 ->', t2)
            c += 1
                
    print(length-c)
'''

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

 

▶ 코드

 

woman,man,k = map(int, input().split())

team = 0
while woman>=2 and man>=1 and woman+man>=k+3:
    woman -=2
    man -=1
    team += 1
print(team)



# 정답 : https://yongku.tistory.com/entry/%EB%B0%B1%EC%A4%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B0%B1%EC%A4%80-2875%EB%B2%88-%EB%8C%80%ED%9A%8C-or-%EC%9D%B8%ED%84%B4-%ED%8C%8C%EC%9D%B4%EC%8D%ACPython

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

▶ 코드

 

# 30, 60, 90, 120, 150, 180...
# 80875542 -> 88755420

n = int(input())
n2 = list(map(int, str(n)))

if 0 not in n2:         # 0이 포함되어있지 않다면
    print(-1)
elif sum(n2) % 3 != 0:  # 3의 배수가 아니라면 
    print(-1)
else:
    n2 = sorted(n2, reverse=True)   # 내림차순 정렬 
    
    answer = ''
    for a in n2:
        answer += str(a)
    print(answer)
    

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

 

▶ 코드

 

import sys

def greedy(temp):
    c = 0
    start = 0
    
    for t in temp:
        if t[0] >= start:
            start = t[1]
            c += 1
            print(start)
    return c

if __name__ == "__main__":
    N = int(sys.stdin.readline())
    temp = []
    for i in range(N):
        start, end = map(int, sys.stdin.readline().split())
        temp.append((start, end))
    temp = sorted(temp, key=lambda t:t[0]) # 시작시간 기준으로 오름차순 정렬
    print('시작시간 기준 = ',temp)
    temp = sorted(temp, key=lambda t:t[1]) # 종료시간 기준으로 오름차순 정렬
    print('시작+종료시간 기준 = ',temp)
    # 1. 이렇게하면, 기존의 시작 시간 기준으로 정렬한 값들을 '최대한 유지'하려 하기 때문에, 종료 시간이 같다면, 시작 시간이 빠른 기준으로 정렬된 결과가 나타난다. ex.. (1,2), (2,2)
    # 2. 종료 시간이 짧은것 먼저 정렬했기 때문에 더 많은 회의들을 추가할 수 있다. 

    # 시작시간 기준 =  [(0, 6), (1, 4), (2, 13), (3, 5), (3, 8), (5, 7), (5, 9), (6, 10), (8, 11), (8, 12), (12, 14)]
    # 시작+종료시간 기준 =  [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)]
    
    print(greedy(temp))

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

▶ 코드

 

import sys

if __name__ == "__main__":
    N = int(sys.stdin.readline()) # N은 1000미만의 정수
    c = 0
    N = 1000 - N
    while N > 0:
      if N >= 500:
        N-=500
        c += 1
      elif N >= 100:
        N-=100
        c += 1
      elif N >= 50:
        N-=50
        c += 1
      elif N >= 10:
        N-=10
        c += 1
      elif N >= 5:
        N-=5
        c += 1
      elif N >= 1:
        N-=1
        c += 1
    print(c)

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

▶ 코드

 

N, k = map(int, input().split(' '))

lst = [0]*N
for i in range(N):
    lst[i] = int(input()) # [1,5,10]

lst = sorted(lst, reverse=True)
#print(lst)
      
c = 0
while k > 0:
  for i in range(len(lst)):
    if k >= lst[i]:
        q = k//lst[i]
        k -= q * lst[i]
        c += q
print(c)

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11399] ATM  (0) 2020.05.03

▶ 코드

# 3 1 4 3 2
# 1 2 3 3 4 
# 1 3 6 9 13 -> 32

N = int(input())
lst = list(map(int, input().split(' ')))
#print(lst)
lst.sort()
#print(lst)

s = 0
for i in range(len(lst)):
    s += sum(lst[:i+1])
print(s)

'코테 기본개념 > 그리디' 카테고리의 다른 글

[백준 1946] 신입 사원  (0) 2020.05.05
[백준 2875] 대회 or 인턴  (0) 2020.05.05
[백준 10610] 30  (0) 2020.05.05
[백준 1931] 회의실배정  (0) 2020.05.03
[백준 5585] 거스름돈  (0) 2020.05.03
[백준 11047] 동전 0  (0) 2020.05.03