๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ด์ฝ”๋‹ค] ์ •๋ ฌ & ์ด์ง„ํƒ์ƒ‰ ์‹ค์ „๋ฌธ์ œ

by Tamii 2021. 7. 28.
๋ฐ˜์‘ํ˜•

p.181 ์ •๋ ฌ ์‹ค์ „๋ฌธ์ œ

def solution():
    n = int(input())
    student = []
    for i in range(n):
        name,grade = input().split()
        student.append([name,int(grade)])
    student =sorted(student,key = lambda x : x[1] )
    for i in student:
        print(i[0],end=' ')
solution()

์ •๋ง์ •๋ง ๊ฐ„๋‹คํ•œ ๋ฌธ์  ๋ฐ ๋‹จ์ˆœํ•œ ์‹ค์ˆ˜๋ฅผ ํ•ด์„œ ๊ธฐ๋กํ•œ๋‹ค.

๋ฐฐ์šด์ 

1. ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์ด ์ •์ˆ˜์ธ์ง€ ๋ฌธ์ž์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ

2. sorted๋ฅผ ํ•˜๊ณ  ๋‚œ ๊ฒฐ๊ณผ๋Š” ๋‹ค์‹œ ๋ฐ›๊ธฐ (sort์™€ ๋‹ค๋ฅด๋‹ค! ์ •๋ ฌํ•œ ๊ฐ’์„ ์žฌํ• ๋‹น ํ•ด์ค˜์•ผ ํ•œ๋‹ค)

 


p.182 ๋‘ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ต์ฒด

์‹œ๊ฐ„ ๋ณต์žก๋„ ์ƒ๊ฐ ์•ˆํ•˜๊ณ  ํ‘ผ ํ’€์ด

def solution():
    n,k = map(int,input().split())
    A = list(map(int,input().split()))
    B = list(map(int,input().split()))

    for i in range(k):
        minA = min(A)
        maxB = max(B)
        A[A.index(minA)],B[B.index(maxB)]=B[B.index(maxB)],A[A.index(minA)]
    print(A)
    print(sum(A))
solution()
def solution ():
    n,k = map(int,input().split())
    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]:
            A[i],B[i]=B[i],A[i]
        else:
            break
    print(sum(A))
solution()

๋ฐฐ์šด์ 

1. ์‹œ๊ฐ„ ํšจ์œจ์„ฑ์„  ๊ณ ๋ คํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜์ž.

2. ์กฐ๊ฑด์ด ์•„๋‹ˆ๋ฉด breakํ•ด์„œ ๋‹ค์–‘ํ•œ test case์˜ ์‹œ๊ฐ„ํšจ์œจ์„ ์ค„์ด์ž

 

 

p.197 ๋ถ€ํ’ˆ์ฐพ๊ธฐ

 

์ด์ง„ํƒ์ƒ‰

def solution():
    n = int(input())
    store_part =list(map(int,input().split()))
    m = int(input())
    find_part =list(map(int,input().split()))

    def bin_search(target,data,start,end):
        while start <= end:
            mid = (start+end)//2

            if data[mid]== target:
                return mid
            elif data[mid]<target:
                start = mid+1
            elif data[mid]>target:
                end = mid-1
        return None
    
    for i in range(m):
        result = bin_search(find_part[i],store_part,0,n-1)
        if result != None:
            print('yes',end= ' ')
        else:
            print('no',end= ' ')

 

๊ณ„์ˆ˜ํƒ์ƒ‰

def solution():
    n = int(input())
    # store_part =list(map(int,input().split()))

    arr = [0]*1000000
    for i in input().split():
        arr[int(i)] = 1

    m = int(input())
    find_part =list(map(int,input().split()))

    for f in find_part:
        if arr[f] ==1:
            print('yes',end= ' ')
        else:
            print('no',end= ' ')

 

p.201 ๋–ก๋ณถ์ด ๋งŒ๋“ค๊ธฐ

 

๋‚ด ํ’€์ด

def solution():
    n,m = map(int,input().split())
    high= list(map(int,input().split()))
    def bin_search(target,data,start,end):
        while start<=end:
            mid = (start+end)//2
            pri = data[mid]
            sumRice = sum([d-pri for d in data if d-pri>0])
            
            if sumRice>= target:
                return mid
            else:
                start = mid+1

    high.sort()
    result = bin_search(m,high,0,n-1)
    print(high[result])
solution()

๋‚˜์˜ ํ’€์ด๊ฐ€ ๋‹ค๋ฅธ ํ’€์ด์™€ ๋‹ค๋ฅธ์ ์€

- sort๋ฅผ ํ•ด์„œ ๋ฐ”๋กœ mid๋ฅผ return ํ•˜๋ฉด ๋œ๋‹ค๋“  ์ 

- sumRice๋ผ๋Š” ๋ฐฐ์—ด์— ๋„ฃ์–ด๋‘๊ณ  ํ•ฉ์„ ๊ตฌํ–ˆ๋Š”๋ฐ ๊ตณ์ด ๋ฐฐ์—ด์— ๋„ฃ์ง€ ์•Š๊ณ  total ์— ๋”ํ•ด๋‘๋ฉด ๋œ๋‹ค.

 

 

๋Œ“๊ธ€