/images/jg_02.jpg

SW Expert Academy_D3 5948, 5789, 5688, 5549

D3_5948_새샘이의 7-3-5 게임

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
for T in range(int(input())):
    N = list(map(int, input().split()))

    result = set()
    for i in range(5):
        for j in range(i+1, 6):
            for x in range(j+1, 7):
                result.add(N[i]+N[j]+N[x])

    result = list(result)
    result.sort()
    print('#{} {}'.format(T+1, result[-5]))
    
# 3수의 합을 정리하는데 set으로 중복을 제거하는 방법으로 result set을 정리
# set은 순서가 없기 때문에 result를 다시 list로 정리하고 .sort를 이용해 순서대로 나열 후 출력

SW Expert Academy_D3 6190, 6057, 6019, 5986

D3_6190_정곤이의 단조 증가하는 수

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
for T in range(int(input())):
    N = int(input())
    L = list(map(int, input().split()))

    result = -1
    for i in range(N-1):
        for j in range(i+1, N):
            num = str(L[i]*L[j])
            if len(num) > 1 and '0' not in num and result < int(num) and list(num) == sorted(num):
                result = int(num)
    print(f'#{T+1} {result}')

# 단조증가하는 지를 검증하는 방법으로 sorted를 썼는데 이를 활용하기 위해서는 str형태로 변경해야 검증이 가능하다.
# 한자리 숫자는 단조증가하는 수가 아니다.
# 중간에 0이 있다면 볼 필요도 없이 단조증가수가 아니기 때문에 처리 속도 증가가 가능하다. 

SW Expert Academy_D3 9700, 7675, 6692, 6485

D3_9700_USB 꽂기의 미스터리

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
for T in range(int(input())):
    p, q = map(float, input().split())
    s1 = (1-p)*q
    s2 = p*(1-q)*q

    if s1 < s2:
        print(f'#{T+1} YES')
    else:
        print(f'#{T+1} NO')
        
# 단순 수학을 통해 해결.

D3_7675_통역사 성경이

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
for T in range(int(input())):
    N = int(input())
    sent = input()
    sent = sent.replace('.', ' @').replace('!', ' @').replace('?', ' @').split()
    #print(sent)
    result = ""
    count = 0
    for i in sent:
        if i.isalpha() and i == i.capitalize():
            count += 1
        if i == '@':
            result += str(count) + ' '
            count = 0
    print("#{} {}".format(T+1, result))

# 주어지는 문장을 띄어쓰기를 기준으로 나누기 위해 .split()을 사용하고 
# 문제에서 주어진 `이름`의 조건이 `첫 알파벳이 대문자이고 나머진 소문자`이기 때문에
# 문자로만 이루어져있는 것인지 .isalpha()로 검증 (VS .isdigit() 주어진 문자열이 숫자인지 검증)
# `이름`의 조건이 맞는지 .capitalize()로 검증
	# 추가 공부 내용
	# upper - 주어진 문자열에서 모든 알파벳들을 대문자로 변환시킨다.
    # capitalize - 주어진 문자열에서 맨 첫 글자를 대문자로 변환하고 나머지는 소문자로 변환시킨다.
    # title	- 주어진 문자열에서 알파벳 외의 문자(숫자, 특수기호, 띄어쓰기 등)로 나누어져 있는 영단어들의 첫 글자를 모두 대문자로 변환시킨다.

# .isalpha()와 .capitalize()를 알고나면 간단해지는 문제.