BOJ/๐Ÿฅˆ

โ˜…Sorting Intermediate I - 18 Solvedโ˜…

metamong 2022. 11. 20.

โ˜… 1181 ๋‹จ์–ด ์ •๋ ฌ โ˜…

 

import sys
input = sys.stdin.readline

w = set()

for _ in range(int(input())):
    w.add(input().rstrip())

w = list(w)
w.sort()
w.sort(key=len)
#words.sort(key=lambda x:len(x))

print('\n'.join(w))
#for word in words:
#    print(word)

 

๐Ÿš€ 

โ‘  ๊ฐ™์€ ๋‹จ์–ด ํ•œ ๋ฒˆ๋งŒ ์ถœ๋ ฅ - ์ค‘๋ณต x - set() ์‚ฌ์šฉ

โ‘ก ์‚ฌ์ „ ์ˆœ ์ •๋ ฌ, ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์ •๋ ฌ - sort() ์‚ฌ์šฉ

 

๐Ÿš€ 

โ‘  set() ์‚ฌ์šฉํ•œ ๋’ค, add method๋ฅผ ์‚ฌ์šฉํ•ด ์ค‘๋ณต์ด ๋ฐฐ์ œ๋œ ๋‹จ์–ด set() ์ƒ์„ฑ

โ€ป ๋จผ์ € ๊ธธ์ด ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์ •๋ ฌํ•˜๊ณ , ์‚ฌ์ „ ์ˆœ ์ •๋ ฌ์ด๋ฏ€๋กœ, A → B ์ •๋ ฌ ์ˆœ์„œ๋ผ๋ฉด, B๋จผ์ € ์ •๋ ฌ์„ ์ง„ํ–‰ํ•œ ๋’ค, A ์ •๋ ฌ์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

โ‘ก set()๋ฅผ list()๋กœ ๋ฐ”๊พผ ๋’ค, sort() ์ง„ํ–‰(B์ •๋ ฌ) → key=len์„ ๊ฐ€์ง„ sort() ์ง„ํ–‰(A์ •๋ ฌ) (lambda ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„์ด ์•ฝ๊ฐ„ ๋” ์†Œ์š”)

โ€ป key๊ฐ’์„ len์œผ๋กœ ์„ค์ •ํ•˜๋ฉด, ๊ธธ์ด๊ฐ€ ์งง์€ ๋ฌธ์ž์—ด๋ถ€ํ„ฐ ์ •๋ ฌ

 

๐Ÿš€ โ‰ซ \n.join์„ ํ•˜๋ฉด ํ•œ๋ฒˆ์— ๋ชจ๋“  ์›์†Œ๊ฐ€ ํ•œ ์ค„์”ฉ ์ถœ๋ ฅ๋œ๋‹ค. (for๋ฌธ ๋Œ๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋” ์ ˆ์•ฝ๋จ - join ์‹œ๊ฐ„ ํšจ์œจ์„ฑ)

 

+) ๊ฐ ๋ฌธ์ž์—ด ๊ธธ์ด๋ณ„๋กœ dictionary ์ž๋ฃŒํ˜•์— ๋„ฃ๊ณ  ํ•œ๋ฒˆ์— sorted()๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด, ๊ธธ์ด๋ณ„ ์ •๋ ฌ - ์‚ฌ์ „์ˆœ ์ •๋ ฌ์ด ํ•œ ๋ฒˆ์— ์ง„ํ–‰์ด ๋˜๋‚˜, ์‚ฌ์ „์ž๋ฃŒํ˜•๋•Œ๋ฌธ์— ์‹คํ–‰์‹œ๊ฐ„์ด ์ข€ ๋” ๊ธธ๋‹ค! (์•„๋ž˜ ํ’€์ด ์ฐธ์กฐ - 116ms)

import sys
input = sys.stdin.readline

N = int(input())

words = []
dic = {}

for _ in range(N):
    words.append(input().rstrip())

for word in words:
    dic[word] = len(word)

new_dic = sorted(dic.items(), key=lambda x: (x[1],x[0]), reverse=False)

for pair in new_dic:
    print(pair[0])

 


โ˜… 10814 ๋‚˜์ด์ˆœ ์ •๋ ฌ โ˜…

 

๐Ÿš€ ์ •๋ ฌ ๊ธฐ์ค€ - ๋‚˜์ด + ์ด๋ฆ„ ๊ฐ€์ž…์ˆœ - ๋‘ ๊ฐ€์ง€ ๊ธฐ์ค€์ด ์žˆ์–ด์„œ ์ •๋ ฌ์„ ์•Œ๋งž๊ฒŒ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•  ๋ฌธ์ œ

 

๐Ÿš€ ์ •๋ณด ์ €์žฅ ์ž๋ฃŒํ˜• - (1) ์ด์ค‘ list / (2) dictionary

 

(1) ์ด์ค‘ list - sort์˜ key๊ฐ’์„ lambda ํ•จ์ˆ˜๋กœ ๊ตฌํ˜„ํ•ด ์‰ฝ๊ฒŒ ํ’€์ด

import sys
def input(): return sys.stdin.readline().rstrip()

info = []

for _ in range(int(input())):
    info.append(input().split())

for pair in info:
    pair[0] = int(pair[0])

info.sort(key=lambda pair:pair[0])

for pair in info:
    print(pair[0], pair[1])

→ sort()์˜ lambda ํ•จ์ˆ˜ - pair[0]์˜ ๊ฐ’, ์ฆ‰ ๋‚˜์ด์ˆœ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ์ฐจ๋ก€๋Œ€๋กœ ์ง‘์–ด๋„ฃ์—ˆ์œผ๋ฏ€๋กœ, pair[1]์€ update์ˆœ์œผ๋กœ ์ž๋™ ์ •๋ ฌ

 

(2) ๋‘ ์กฐ๊ฑด ์กด์žฌ → dictionary - dictionary์˜ key๊ฐ’์„ ๋‚˜์ด๋กœ ์„ค์ • - sorting() ์—†์ด ์ดˆ๊ธฐํ™”ํ•œ ์‹œ์ž‘๋ถ€๋ถ„๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅ

import sys
def solution():
    n = int(input())
    userList = {j:[] for j in range(1,201)} #dictionary ์ดˆ๊ธฐํ™”

    for _ in range(n):
        inp = sys.stdin.readline().strip()
        k = inp.split(" ")
        userList[int(k[0])].append(inp)
    #print(userList)
    for i in range(1, 201):
        for user in userList[i]:
            print(user)

if __name__=="__main__":
    solution()

โ˜… 11650 ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ โ˜…

 

import sys
input=sys.stdin.readline
l=[]
for _ in range(int(input())):l.append(tuple(map(int,input().split())))
l.sort(key=lambda x:(x[0],x[1]))
for pair in sorted(l):print(*pair)

 

๐Ÿš€ sort() ์ž์ฒด๊ฐ€ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ •๋ ฌํ•˜๋ฉด, ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ, ๋‘ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ž๋™ ์ •๋ ฌํ•ด์ฃผ๋Š”๊ฒŒ default (sorted ์—ญ์‹œ ๋™์ผ)

→ ๋”ฐ๋ผ์„œ, ๊ทธ๋ƒฅ sort() ์จ๋„ ๋˜๊ณ , lamda๋ฅผ ์“ด๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด (x[0], x[1])์˜ ํ˜•ํƒœ ํ•จ์ˆ˜๋กœ ์“ฐ๋ฉด ๋œ๋‹ค.


โ˜… 11651 ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ 2 โ˜…

 

import sys
input=sys.stdin.readline
l=[]
for _ in range(int(input())):l.append(tuple(map(int, input().split())))
l.sort(key=lambda x:(x[1],x[0]))
for p in l:print(*p)

 

๐Ÿš€ ์ขŒํ‘œ ์ •๋ ฌํ•˜๊ธฐ ๋ฌธ์ œ์™€ ๋ฐ˜๋Œ€๋กœ ์˜ค๋ฅธ์ชฝ ์›์†Œ ๋จผ์ € ์ •๋ ฌํ•˜๋Š” ์œ ํ˜•์ด๋ฏ€๋กœ, lambda x:(x[1],x[0]) ํ˜•ํƒœ๋กœ sortingํ•˜๋ฉด ๋!


โ˜… 23253 ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์ •๋ง ์ตœ๊ณ ์•ผ โ˜…

 

import sys
input=sys.stdin.readline

N,M=map(int,input().split())
dummies=[]
flag=0

for _ in range(M):
    input()
    dummies.append(list(map(int,input().split())))


for dummy in dummies:
    if sorted(dummy,reverse=True)!=dummy:
        flag+=1
        print('No')
        break

if flag==0:print('Yes')

 

๐Ÿš€ ์—ฌ๋Ÿฌ๊ฐœ์˜ dummy, ์ฆ‰ ์ž๋ฃŒ๊ตฌ์กฐ์ƒ ์Šคํƒ์„ ๋งŽ์ด ๋งŒ๋“ค๊ณ  ๋‚œ ๋’ค, ์—ฌ๋Ÿฌ ์Šคํƒ์—์„œ ๊ฐ๊ฐ pop()์„ ๊ตฌํ˜„ํ•ด 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋Š” ์ง€ ๋ฌผ์Œ

 

๐Ÿš€ ์‹ค์ œ stack ๊ตฌํ˜„์„ ์œ„ํ•ด ๋ชจ๋“  ์Šคํƒ์˜ ์ตœ์ƒ๋‹จ ์›์†Œ๋ฅผ ๋น„๊ตํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ. ์• ๋“œ ํ˜น ๋ฌธ์ œ ํŠน์„ฑ์ƒ, ๋ชจ๋“  dummy๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ์ˆ˜์—ด์ด๋ผ๋ฉด 1๋ถ€ํ„ฐ N๊นŒ์ง€ ๋ฝ‘์„ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด No!


โ˜… 18110 solved.ac โ˜…

 

import sys
input=sys.stdin.readline

def roundUp(num):
    if (num - int(num)) >= 0.5:
        return int(num)+1
    else:
        return int(num)

n=int(input())
if n == 0:
    print(0)
else:
    limit_person = roundUp(n*0.15)
    levels=[]
    for _ in range(n):
        levels.append(int(input()))
    levels.sort()
    numbers=len(levels)-2*(limit_person)
    real_levels=levels[limit_person:limit_person+numbers]

    print(roundUp(sum(real_levels)/len(real_levels)))

 

๐Ÿš€ ์ •๋ ฌ์€ list๋กœ ๋ชจ์€ ๋‹ค์Œ ํ•œ ๋ฒˆ์— sort() ํ•จ์ˆ˜ ์ง„ํ–‰

๐Ÿš€ ์ด ๋•Œ, round()์˜ ๊ฒฝ์šฐ 0.5๋ฅผ ๋ฐ˜์˜ฌ๋ฆผํ•  ๋•Œ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋Š” ๋ฒ„๋ฆผ ํ˜„์ƒ์ด ์ž˜๋ชป ๋ฐœ์ƒํ•˜๋Š”๋ฐ, ์ด ์˜ค๋ฅ˜๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ๋ณ„๋„๋กœ roundUp ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด 0.5๊ฐ€ ๋˜์—ˆ์„ ๋•Œ๋„ ๋ฐ˜์˜ฌ๋ฆผ์ด ๋˜๊ฒŒ๋” ํ•˜์˜€๋‹ค.

 

๐Ÿš€ ์ถ”๊ฐ€๋กœ, [] slicing์—์„œ limit_person ๊ฐœ์ˆ˜ list ์•ž๊ณผ list ๋’ค ์ผ๋ถ€๋Š” ํ•ด๋‹น์ด ์•ˆ๋˜๊ฒŒ๋” slicing์„ [limit_person:limit_person+numbers]๋กœ ์ง„ํ–‰


โ˜… 1427 ์†ŒํŠธ์ธ์‚ฌ์ด๋“œ โ˜…

 

N=input()
l=[]
for i in N:
    l.append(int(i))
l.sort(reverse=True)
print(*l,sep='')

 

๐Ÿš€ reverse๊ฐ’์„ True๋กœ ์ •๋ ฌ → sort() ํ•จ์ˆ˜ ์‚ฌ์šฉ


โ˜… 2751 ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 2 โ˜…

import sys
input=sys.stdin.readline
N=int(input())
l=[]
for i in range(N):l.append(int(input()))
l.sort()
for n in l:print(n)

โ˜… 11931 ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 4 โ˜…

 

import sys
input = sys.stdin.readline
N = int(input())
l = [int(input()) for _ in range(N)]
for j in list(sorted(l,reverse=True)):
    print(j)

โ˜… 10867 ์ค‘๋ณต ๋นผ๊ณ  ์ •๋ ฌํ•˜๊ธฐ โ˜…

 

input();print(*sorted(set(map(int,input().split()))))

 

๐Ÿš€ ์ค‘๋ณต ๋นผ๊ณ  ์ •๋ ฌ์ด๋ฏ€๋กœ set() ํ•จ์ˆ˜ ํ™œ์šฉ!


โ˜… 16212 ์ •์—ด์ ์ธ ์ •๋ ฌ โ˜…

 

import sys
input=sys.stdin.readline
input()
print(*sorted(list(map(int,input().split()))))

โ˜… 10825 ๊ตญ์˜์ˆ˜ โ˜…

 

import sys
input=sys.stdin.readline
l=[]
for _ in range(int(input())):l.append(list(input().split()))
l.sort(key=lambda x:(-int(x[1]),int(x[2]),-int(x[3]),x[0]))
for i in l:print(i[0])

 

๐Ÿš€ lambda ์‹์„ ํ™œ์šฉํ•ด์„œ ํ•œ ๋ฒˆ์— ์ฒซ ๋ฒˆ์งธ ๊ฐ์†Œ ์ˆœ - ๋‘ ๋ฒˆ์งธ ์ฆ๊ฐ€ ์ˆœ - ์„ธ ๋ฒˆ์งธ ๊ฐ์†Œ ์ˆœ - ๋งˆ์ง€๋ง‰ ์‚ฌ์ „ ์ˆœ (๊ฐ์†Œ๋Š” ์ˆซ์ž ์•ž์— - ๋ถ™์ด๊ธฐ) lambda ์‚ฌ์šฉ ๊ธฐ๋ฒ• ํ•œ ๋ฒˆ์— ๊ธฐ์–ตํ•˜๊ธฐ! (lambda ์ฝ”๋“œ ๊ผญ ๊ธฐ์–ต)


โ˜… 2822 ์ ์ˆ˜ ๊ณ„์‚ฐ โ˜…

import sys
input=sys.stdin.readline

scores=[int(input()) for _ in range(8)]

print(sum(sorted(scores)[3:]))
ns=[]
for i,score in enumerate(sorted(scores)):
    if i > 2:
        ns.append(scores.index(score)+1)
print(*sorted(ns))

 

๐Ÿš€ ๋ฌธ์ œ์— ์ฃผ์–ด์ง„๋Œ€๋กœ ์ •๋ ฌํ•˜๊ณ  ๊ตฌํ˜„


โ˜… 26975 Cow College โ˜…

import sys
input=sys.stdin.readline

N=int(input())
ts=list(map(int,input().split()))
ts.sort()

for ti in range(N):
    if ti == 0:
        ans_sum = N*ts[ti]
        ans_cnt = N
    else:
        if ts[ti] != ts[ti-1]:
            if ans_sum < (N-ti)*ts[ti]:
                ans_sum=(N-ti)*ts[ti]
                ans_cnt = ts[ti]
print(ans_sum,ans_cnt)

 

๐Ÿš€ ๊ฐ ์†Œ๊ฐ€ ๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋“ฑ๋ก๊ธˆ์ด 1 6 4 6 ์ด๋ ‡๊ฒŒ ์žˆ๋‹ค๋ฉด ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๋“ฑ๋ก๊ธˆ์˜ ์ตœ๋Œ“๊ฐ’ ๊ตฌํ•˜๊ธฐ. ๋งŒ์•ฝ ๊ฐ ์†Œ๋‹น ๋ฐ›๋Š” ๋“ฑ๋ก๊ธˆ์„ 1์ด๋ผ ํ•œ๋‹ค๋ฉด 1x4 = 4, ๋งŒ์•ฝ 4๋ผ๊ณ  ํ•œ๋‹ค๋ฉด 1 ๋‚ผ ์ˆ˜ ์žˆ๋Š” ์†Œ๋งŒ ๋ชป๋‚ด๊ณ  ๋‚จ์€ 3๋งˆ๋ฆฌ๋งŒ ๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 4x3 = 12, ์ด๋ ‡๊ฒŒ ๊ณฑ์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ์ •๋ ฌํ•œ ๋’ค, ์ฐจ๋ก€๋Œ€๋กœ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ง„ํ–‰ํ•˜๋ฉด ์ง„ํ–‰ํ•œ index ์œ„์น˜ํฌํ•จ ์ดํ›„ ์˜ค๋ฅธ์ชฝ๊นŒ์ง€์˜ ์†Œ๋งŒ ๋ชจ๋‘ ๋“ฑ๋ก๊ธˆ์„ ๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณฑ์˜ ์ตœ๋Œ“๊ฐ’์„ updateํ•ด๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค.


โ˜… 31925 APC2shake! โ˜…

import sys
input=sys.stdin.readline

N=int(input())
prel=[]

for _ in range(N):
    name,isjaehak,isICPC,shakerank,APCrank=input().rstrip().split()
    if isjaehak == 'jaehak' and isICPC != 'winner' and (int(shakerank) > 3 or int(shakerank) == -1):
        prel.append((name,int(APCrank)))
prel.sort(key=lambda x:x[1])
prel = prel[:10]
if len(prel) <= 10:
    prel.sort(key=lambda x:x[0])
    print(len(prel))
    for prel_info in prel:
        print(prel_info[0])
else:
    prel.sort(key=lambda x:x[0])
    print(10)
    for prel_info in prel:
        print(prel_info[0])

 

๐Ÿš€ ์กฐ๊ฑด์— ๋งž๊ฒŒ ์ž๋ฅด๊ณ (๋จผ์ € ACPC ์„ฑ์  ์ž๋ฅด๊ณ ) ๊ทธ ๋‹ค์Œ ์ด๋ฆ„์ˆœ ์ •๋ ฌ. ์—ฌ๋Ÿฌ ๊ธฐ์ค€ ์ •๋ ฌ ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์„ ๋จผ์ € ์ •๋ ฌํ•  ์ง€ ์šฐ์„ ์ˆœ์œ„ ์„ธ์šฐ๊ณ  ์ง„ํ–‰


โ˜… 11656 ์ ‘๋ฏธ์‚ฌ ๋ฐฐ์—ด โ˜…

import sys
input=sys.stdin.readline

S=input().rstrip()
l=[S[i:] for i in range(len(S))]
l.sort()
print(*l,sep='\n')

โ˜… 30647 ์ ์ˆ˜ ๊ด€๋ฆฌ โ˜…

import sys
input=sys.stdin.readline
N=int(input())
info_dict={}
for _ in range(N):
    info=input().rstrip()
    name=info.split(':')[1].split(',')[0][1:-1]
    score=int(info.split(':')[2].split(',')[0])
    hid=int(info.split(':')[3].split(',')[0].split('}')[0])

    info_dict[name] = (score,hid)

sorted_info_dict = dict(sorted(info_dict.items(), key = lambda x : (-x[1][0], x[0])))

info_list=[]
for x in sorted_info_dict:
    info_list.append((x,sorted_info_dict[x]))

rank=1
for t in range(len(info_list)):
    if t!=0:
        if info_list[t][1][0]<info_list[t-1][1][0]:
            rank=(t+1)
    if info_list[t][1][1] != 1:
         print(rank, info_list[t][0], info_list[t][1][0])

 

๐Ÿš€ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งž๊ฒŒ dictionary sorting ์‹œ, lambda x ํ™œ์šฉํ•ด (-x[1][0], x[0]) ์‚ฌ์šฉ. 


โ˜… 11004 K๋ฒˆ์งธ ์ˆ˜ โ˜…

N,K=map(int,input().split())
A=list(map(int,input().split()))
A.sort()
print(A[K-1])

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€