โ 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])
'BOJ > ๐ฅ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Binary Search Intermediate I - 9 Solvedโ (0) | 2022.12.07 |
---|---|
โ Greedy Intermediate I - 20 Solvedโ (0) | 2022.12.05 |
โ Implementation&Simulation Intermediate I - 20 Solvedโ (0) | 2022.11.28 |
โ Math & Geometry Intermediate I - 13 Solvedโ (0) | 2022.11.22 |
โ BF Intermediate I - 14 Solvedโ (0) | 2022.11.21 |
๋๊ธ