브루트 포스 알고리즘(brute force)관련 문제
brute: very strong or forceful , very harsh
brute force:A method of accomplishing something primarily by means of strength, without the use of mechanical aids or
thought(힘을 이용하여 주로 무언가를 성취하는 방법, 기계적인 도움이나 사고 없이)
조합 가능한 모든 문자열을 하나씩 대입하는 것이며 노가다와 비슷하다. 하지만 그만큼 정확하다.
#1035 등수 구하기 : 오일러OJ (euleroj.io)
#마법 학교의 학생들 N(1≤N≤100)명의 점수 M(1≤M≤100)을 입력받아 등수를 구하는 프로그램을 작성하여라.
#점수가 같은 경우는 같은 등수로 인정한다.
#등수는 본인의 점수보다 큰 점수가 있을 경우 "학생수 + 1"등으로 한다
#예를 들어 100점, 80점, 80점, 50점, 40점이 있다면 100점은 1등이고, 80점 2명은 2등이고, 50점은 4등이고, 40점은 5등이 된다.
#입력 예시:
#5
#100 80 80 50 40
#출력 예시:
#1 2 2 4 5
num=int(input()) #첫번째 입력
scores=list(map(int,input().split())) #점수들을 입력 받는다
rst=[] #학생들의 등수를 저장할 리스트
for i in range(0,num): #학생 수 만큼 rst리스트를 초기화
rst.append(0)
grade=1 #등수 저장변수
while grade <=num: #학생수랑 등수 비교
cnt=0 #동일 학생이 몇 명인지
max=scores[0]
for i in range(0,num):
if(max<scores[i]):
max=scores[i]
for i in range(0,num):
if(max==scores[i]):
cnt+=1
rst[i]=grade #결과 리스트의 학생의 등수를 수정한다.
scores[i]=0 #나중 연산을 위하여 0으로 초기화
grade+=cnt
for i in range(0,num):
print(rst[i],end=' ')
단순 수학 문제
#1036 약수 구하기 : 오일러OJ (euleroj.io)
#약수 구하기
#어떤 자연수 P,Q
#P를 Q로 나누었을 때 나머지가 0이면 Q는 P의 약수이다
#두 개의 자연수 N과 K가 주어졌을 때
#N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성
#입력 예시
#6 3 -->3
#25 4 -->0
#2735 1 -->1
x,y=input().split()
x=int(x)
y=int(y)
rst=[]
for i in range(1,x+1): #첫번째 입력 값만큼 반복
if(x%i==0):
rst.append(i)#약수인경우 리스트에 추가
if (y>=len(rst)):
print('0')
else:
print(rst[y-1])
#1038 나머지 : 오일러OJ (euleroj.io)
#두 개의 정수 A와 B가 주어졌을 때
#A Modulo B는 A를 B로 나누었을 때의 나머지를 의미한다
#7, 14, 27, 38을 3으로 나누었을 때의 나머지는 1, 2, 0, 2가 된다
#10개의 정수가 주어지면, 42로 나누었을 때
#서로 다른 나머지를 갖는 수는 몇 개나 되는지 구하여라.
#input:1,000보다 작은 음이 아닌 정수가 10개의 줄에 걸쳐서 각 줄에 주어진다.
#output:입력으로 주어진 정수들을 42로 나누었을 때-
#-서로 다른 나머지를 갖는 정수는 몇 개나 되는지 첫째 줄에 출력하여라
rst=[]
for i in range(0,10): #input
a=int(input())
a=a%42 #mod
rst.append(a) #append
try:
for i in range(0,len(rst)):
for j in range(0,len(rst)):
if rst[i]==rst[i+1]:
del(rst[i+1])
except:
print(len(rst))
#1039 오븐 시계 : 오일러OJ (euleroj.io)
#첫째 줄에는 현재 시각이 나온다
# 현재 시각은 시 A(0≤A≤23)와 분 B(0≤B≤59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다.
#두 번째 줄에는 요리하는 데 필요한 시간 C(0≤C≤1,000)
#input:14 30
#20
#output:14 50
x=list(map(int,input().split()))
y=int(input())
addHour=(y/60)
y=y%60
x[0]=x[0]+addHour
x[1]=x[1]+y
if x[1]>=60:
x[1]=x[1]-60
x[0]+=1
if x[0]>=24:
x[0]=x[0]-24
print("%d %d"%(x[0],x[1]))
단순 수학
#1110 체스판 자르기 : 오일러OJ (euleroj.io)
##1 2 2*1
##2 4 2*2
##3 6 3*2
##4 9 3*3
##5 12 4*3
##6 16 4*4
a=int(input())
i,j=1,1
for k in range(1,a+1):
if(k%2==1):
i+=1
else:
j+=1
print(i*j)
#1040 배열 변환 : 오일러OJ (euleroj.io)
#행과 열을 변환
#첫줄은 행과 열의 크기가 주어진다
#다음 줄부터는 배열에 대한 데이터가 주어짐
#input:
#3 4
#1 2 3 4
#5 6 7 8
#9 10 11 12
#output:
#1 5 9
#2 6 10
#3 7 11
#4 8 12
x,y=map(int,input().split())
arr=[]
rst=[]
for i in range(0,x):
a=list(map(int , input().split()))
arr.append(a)
for i in range(0,y):
arrA=[]
for j in range(0,x):
arrA.append(0)
rst.append(arrA)
for i in range(0,y):
for j in range(0,x):
rst[i][j]=arr[j][i]
print(rst[i][j],end=' ')
print()
'코딩 및 기타' 카테고리의 다른 글
| 오일러 1100,1131,1132 (0) | 2022.12.30 |
|---|---|
| 오일러 1047 (0) | 2022.12.29 |
| 오일러 1045,1046,2022 (0) | 2022.12.28 |
| 오일러1044 (0) | 2022.12.27 |
| 오일러 1041,1042,1043 (0) | 2022.12.26 |