본문 바로가기
컴퓨터/백준 문제풀이

2484 주사위 네개, 16675 두 개의 손, 17413 단어 뒤집기

by 하링아 2020. 10. 29.
반응형

2484 주사위 네개, 16675 두 개의 손, 17413 단어 뒤집기

 

2484 주사위 네개

max_prize = 0
for _ in range(int(input())):
    dices = list(map(int, input().split()))
    dices.sort()
    
    # all same number
    if len(set(dices)) == 1:
        prize = 50000 + (dices[0] * 5000)
    # two numbers
    elif len(set(dices)) == 2:
        if dices[1] == dices[2]:
            prize = 10000 + (dices[1] * 1000)
        elif dices[1] != dices[2]:
            prize = 2000 + (dices[0] * 500) + (dices[2] * 500)
    elif len(set(dices)) == 3:
        for i in range(3):
            if dices[i] == dices[i+1]:
                prize = 1000 + (dices[i] * 100)
                break
    else:
        prize = max(dices) * 100
    if prize > max_prize:
        max_prize = prize
print(max_prize)

 

16675 두 개의 손

ml, mr, tl, tr = ('SPR'.index(i) for i in input().split())

if ml == mr and (ml+2) % 3 in [tl, tr]:
	print('TK')
elif tl == tr and (tl+2) % 3 in [ml, mr]:
	print('MS')
else:
	print('?')

- 숫자로 바꾸면 3이 1을 못이기니 어떻게 처리하나 했는데 index() 사용 후 나머지를 이용하면 편함

- 변수 여러개에 input 받으려면 튜플로 받으면 됨

 

 

17413 단어 뒤집기

# 첫번째 풀이
def revers(pre, post): # 단어 뒤집기 함수
	global s
	string = ""
	for i in range(post, pre-1, -1):
		string += s[i]
	s = s[:pre] + string + s[post+1:]
	
s = input()
v = 0
pre_idx = 0
post_idx = 0
check_idx = -1
idx_list = []

for i in range(len(s)): # 뒤집을 단어 양 끝의 인덱스 구하기
	if s[i] == '<':
		v += 1
	elif s[i] == '>':
		v -= 1
	else: # alphabet or number
		if v != 0: # in '<>'
			continue
		else: # out of '<>'
			if s[i] != ' ': # 공백이 아닐 때만
				if check_idx == -1:
					pre_idx = i
					check_idx = 1 # 앞 인덱스 추가
				if len(s)-1 == i:
					post_idx = i
					idx_list.append([pre_idx, post_idx])
				elif s[i+1] == ' ' or s[i+1] == '<':
					post_idx = i
					idx_list.append([pre_idx, post_idx])
					check_idx = -1
for pre, post in idx_list: # 구한 인덱스로 단어 뒤집기
	revers(pre, post)
print(s)

# 두번째 풀이
S, tmp = input(), ""

ck = False

for i in S:
	if i == ' ':
		if not ck:
			print(tmp[::-1], end=" ")
			tmp = ""
		else:
			print(" ", end="")
	elif i == '<':
		ck = True
		print(tmp[::-1] + "<", end="")
		tmp = ""
	elif i == '>':
		ck = False
		print(">", end="")
	else: # alphbet and number
		if ck:
			print(i, end="")
		else:
			tmp += i
			
print(tmp[::-1]) 

- print() 안에 리스트를 출력하는 방식 편의성 list[], list[::-1](거꾸로)

- 0, 1로 구별 말고 True, False로 구별하는 법도 있음

반응형

댓글