정화 코딩
EDOC 2023-2 1회차 정모 본문
A. 정ㅋ벅ㅋ (백준 1237번)
https://www.acmicpc.net/problem/1237
#python
print("문제의 정답")
예전에 풀었었던... 킹받는 문제... 사실 예전에 내가 제출한 거 보고 풀었다,, ㅎㅎ (정답)
B. 소인수분해 (백준 11653번)
https://www.acmicpc.net/problem/11653
#python
from sys import stdin
n = int(stdin.readline())
num = 2
while n > 1:
if n % num == 0:
print(num)
n = n // num
else:
num += 1
(정답)
C. 그룹 단어 체커 (백준 1316번)
https://www.acmicpc.net/problem/1316
#python
from sys import stdin
n = int(stdin.readline())
count = 0
for i in range(0, n):
str = stdin.readline().strip()
alpha = [0] * 26
isGroup = True
alpha[ord(str[0])-97] = 1
for j in range(1, len(str)):
if str[j] != str[j-1]:
if alpha[ord(str[j])-97] == 0:
alpha[ord(str[j])-97] = 1
else:
isGroup = False
break
if isGroup:
count += 1
print(count)
뭔가 좀 간결하지 못하고 지저분하지만... 어쨋든 (정답)
D. 세 막대 (백준 14215번)
https://www.acmicpc.net/problem/14215
#python
from sys import stdin
a, b, c = map(int, stdin.readline().split())
max, min1, min2 = 0, 0, 0
if a >= b:
if a >= c:
max = a
min1 = b
min2 = c
else: # a < b
max = c
min1 = a
min2 = b
else: # a < b
if b >= c:
max = b
min1 = a
min2 = c
else: # b < c
max = c
min1 = a
min2 = b
while max >= min1 + min2:
max -= 1
print(max + min1 +min2)
E. solved.ac (백준 18110번)
https://www.acmicpc.net/problem/18110
#python
from sys import stdin
n = int(stdin.readline())
data = []
if n == 0:
print(0)
exit()
for i in range(0, n):
data.append(int(stdin.readline()))
data.sort()
exc = round(n * 0.15)
sum = 0
for i in range(exc, n-exc):
sum += data[i]
avg = sum / (n - 2*exc)
print(round(avg))
(오답) 여기서 처음 알게 된 것. 반올림에는 여러 종류가 있는데, 사사오입과 오사오입이 그 중 일부이다. (둘의 차이는 찾아보긴 했으나 명확하게 이해하진 못했다...) 우리가 일반적으로 말하는 반올림은 사사오입이지만, 파이썬 내장 함수 round는 오사오입이다. 그렇기 때문에 round 함수를 쓰면 오답으로 뜬다.
#python
from sys import stdin
import math
n = int(stdin.readline())
data = []
if n == 0:
print(0)
exit()
for i in range(0, n):
data.append(int(stdin.readline()))
data.sort()
exc = math.floor(n * 0.15 + 0.5)
sum = 0
for i in range(exc, n-exc):
sum += data[i]
avg = sum / (n - 2*exc)
print(math.floor(avg + 0.5))
파이썬에서 사사오입 반올림을 구현하는 여러 방법이 있다. 0.00001과 같이 작은 값을 더해주고 round 함수 사용하기, 0.5를 더하고 floor 함수를 사용하기, decimal 이용하기 등... 그 중 나는 0.5를 더해주고 floor 함수를 적용하는 방법을 사용했다. 참고로 round 함수는 따로 import할 필요가 없지만, floor 함수는 import math를 적어주어야 한다. (정답)
[참고] https://puleugo.tistory.com/43, https://hleecaster.com/python-round/
F. Z (백준 1074번)
https://www.acmicpc.net/problem/1074
(미해결)
'Group > EDOC' 카테고리의 다른 글
EDOC 2023-2 3주차 과제 (0) | 2023.10.07 |
---|---|
EDOC 2023-2 3회차 정모 (0) | 2023.10.02 |
EDOC 2023-2 2주차 과제 (0) | 2023.09.26 |
EDOC 2023-2 2회차 정모 (0) | 2023.09.26 |
EDOC 2023-2 1주차 과제 (0) | 2023.09.20 |