폴더 분리
This commit is contained in:
29
workbook_8708/bronze/1157-b1.py
Normal file
29
workbook_8708/bronze/1157-b1.py
Normal file
@@ -0,0 +1,29 @@
|
||||
# 단어 공부
|
||||
|
||||
import sys
|
||||
from collections import Counter
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
def solution():
|
||||
word = input().rstrip().upper()
|
||||
char_list = Counter(word)
|
||||
ordered_c = char_list.most_common(2)
|
||||
if len(ordered_c) == 1 or ordered_c[0][1] != ordered_c[1][1]:
|
||||
print(ordered_c[0][0])
|
||||
else:
|
||||
print("?")
|
||||
return
|
||||
|
||||
|
||||
solution()
|
||||
|
||||
|
||||
"""
|
||||
걸린 시간: 15분
|
||||
|
||||
해설: 문자 전체를 대문자로 바꾼 다음 Counter를 활용하여 각 문자당 개수를 센다.
|
||||
most_common(2)으로 가장 많이 나온 문자 2개를 가져오는데, 이 때, 1개라면 그냥 출력하면 되고
|
||||
2개라면 두 문자가 나온 빈도수가 다르다면 공동 1등이 없다는 뜻이므로 정렬되어 있기 때문에
|
||||
첫 번째 문자를 가져온다.
|
||||
"""
|
||||
27
workbook_8708/bronze/2292-b2.py
Normal file
27
workbook_8708/bronze/2292-b2.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# 벌집
|
||||
|
||||
import sys
|
||||
from math import ceil, sqrt
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
def solution():
|
||||
n = int(input().rstrip())
|
||||
print(ceil(((sqrt(1+(4/3)*(n-1)))-1)/2)+1)
|
||||
return
|
||||
|
||||
|
||||
solution()
|
||||
|
||||
|
||||
|
||||
"""
|
||||
걸린 시간: 50분..(키보드로 식 계산하려다 보니 헷갈림)
|
||||
|
||||
해설: 6*1, 6*2, 6*3, 6*4 ... 겉껍질의 개수가 이렇게 증가하는데 몇 번째 껍질에 있느냐가 1에서 그 방까지
|
||||
도달에 필요한 개수이다.
|
||||
1 7 19 37 61 => 0 6 18 36 60=> 0 1 3 6 10 => n <= 6k(k+1)/2 + 1
|
||||
k^2 + k - (n-1)/3 = 0을 만족하는 값 k보다 크거나 같은 정수를 구하면 된다.
|
||||
result = ceil(((sqrt(1+(4/3)*(n-1)))-1)/2)
|
||||
k번째 껍질에 있다는 뜻이고, 1이 있는 곳을 0번째 껍질이라고 가정하고 계산했기 때문에 답은 result+1이다.
|
||||
"""
|
||||
25
workbook_8708/bronze/23971-b3.py
Normal file
25
workbook_8708/bronze/23971-b3.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# ZOAC 4
|
||||
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
def solution():
|
||||
h, w, n, m = map(int, input().rstrip().split())
|
||||
a = (h // (n+1)) + 1 if (h % (n+1)) != 0 else h // (n+1)
|
||||
b = (w // (m+1)) + 1 if (w % (m+1)) != 0 else w // (m+1)
|
||||
print(a*b)
|
||||
return
|
||||
|
||||
solution()
|
||||
|
||||
"""
|
||||
걸린 시간: 15분?
|
||||
|
||||
해설: n, m씩 떨어져 앉아야 된다는 것은 (n+1) X (m+1)의 직사각형의 범위를 가진다는 뜻이고, 전체 격자에 이 직사각형이 몇 개 들어가냐의 문제로 바뀐다.
|
||||
따라서 직사각형의 가로를 w에 나눈 몫과 직사각형의 세로를 h에 나눈 몫을 곱하면 그 격자에 들어가는 직사각형을 구할 수 있다.
|
||||
이때 주의할 점은 사람은 직사각형의 한 칸만 차지하기 때문에 나누어떨어지지 않고, 조금 칸이 남는 경우에는 사람이 앉을 수 있다.
|
||||
따라서 나누어떨어지지 않는 경우에는 마지막에 곱할 때, 1씩 더해준다.
|
||||
추가로, n만큼 떨어지거나(or) m만큼 떨어지면된다. 라는 말에 직사각형으로 아예 치는게 맞느냐는 의문이 들 수 있다.
|
||||
근데 실제로 m만큼 안 떨어지고 n만큼만 떨어져서 앉게 그림을 그려도 어떻게 그리든 사람마다 직사각혐의 범위를 침범할 수 없다.
|
||||
"""
|
||||
44
workbook_8708/bronze/5073-b3.py
Normal file
44
workbook_8708/bronze/5073-b3.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# 삼각형과 세 변
|
||||
|
||||
import sys
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
CHECK = {0: "Invalid", 1: "Scalene", 2: "Isosceles", 3: "Equilateral"}
|
||||
|
||||
def check_triangle(a, b, c):
|
||||
if a == b and b == c:
|
||||
return 3
|
||||
|
||||
lst = sorted([a, b, c], reverse=True)
|
||||
|
||||
if lst[0] >= lst[1] + lst[2]:
|
||||
return 0
|
||||
|
||||
if a != b and b != c and c != a:
|
||||
return 1
|
||||
else:
|
||||
return 2
|
||||
|
||||
def solution():
|
||||
while 1:
|
||||
a, b, c = map(int, input().rstrip().split())
|
||||
if a+b+c == 0:
|
||||
break
|
||||
|
||||
result = check_triangle(a, b, c)
|
||||
print(CHECK.get(result, 0))
|
||||
return
|
||||
|
||||
solution()
|
||||
|
||||
"""
|
||||
걸린 시간: 30분? (함수 나누고, 더 빠른 거 생각해보려다 늦어짐)
|
||||
|
||||
해설: 셋 다 무조건 양수로 들어오는데 0, 0, 0이면 끝나므로 더했을 때 0이면 끝내도록 메인함수를 설계했다.
|
||||
check 함수에서는 0,1,2,3 중에 값을 직접 확인하는 함수인데, 셋 다 같은 경우가 가장 쉽기 때문에 1번으로 체크하였고,
|
||||
그 다음은 삼각형의 조건인 '제일 큰 변이 나머지 두 변의 합보다 작아야 된다'를 체크하기 위해 정렬하고, 미리 걸러서 invliad를 확인하였다.
|
||||
이때, 1,2번 길이가 같던, 2,3번 길이가 같던 어떤 상황이든 상관없이 정렬하고, 1 >= 2+3 하면 된다.
|
||||
마지막으로 1: "Scalene", 2: "Isosceles"를 거를 때는 두 개가 같은 것이 있냐를 알아보는 것보다 셋 다 다른 것을 알아보는게 더 빠르기 때문에
|
||||
if else로 처리했다. (2는 a=b and b=!c 와 a!=b!=c)
|
||||
"""
|
||||
Reference in New Issue
Block a user