본문 바로가기
728x90

Programming Language Training/Python73

Baekjoon Training #1449 #1449 #물이 새는 곳의 개수 n과 테이프의 길이 l을 입력받음 n,l = map(int,input().split()) #물이 새는 위치인 pos를 list에 입력받음 pos = list(map(int,input().split())) #물이 새는 위치가 정렬이 안되어있을 수 있으니 정렬을 해줌 pos.sort() #양옆으로 0.5만큼 커버해야하니 start를 pos[0]보다 0.5만큼 왼쪽으로 잡음 start = pos[0] - 0.5 count = 1 #카운터 설정(테이프 개수) #for문 이용하여 그리디 알고리즘 실행 for i in range(1, len(pos)): #기존의 테이프로 다음 새는 곳이 커버가 된다면 새로운 테이프 이용 if start + l >= pos[i] + 0.5: cont.. 2022. 9. 26.
Baekjoon Training #1436 #1436 #n번째 영화의 제목 n=int(input()) #n입력 cnt=0 #counter변수 0으로 초기화 num=666 #666부터 전수조사를 위해 num을 666으로 초기화 while True: #num을 string으로 바꿔서 666이 포함이 되어있으면 counting진행 if "666" in str(num): cnt+=1 #counter가 입력한 n과 일치하면 num을 출력 if cnt==n: print(num) break #목표값을 찾으면 전수조사 종료 num+=1 #반복문이 진행될때마다 num을 1씩커지게해서 전수조사 진행 조건문을 이용해서 문자열에서 원하는 내용이 있는지 조사하는 방법을 알게되었다. 브루트포스 알고리즘 즉 전수조사 알고리즘의 핵심은 반복문을 통해 base가 되는 값들을 .. 2022. 9. 20.
Baekjoon Training #7568 #7568 num = int(input()) #학생 수 입력 slist = [] #학생 스펙 리스트 anslist=[] #덩치 등수 리스트 for i in range(num): w, h = map(int, input().split()) #무게와 키를 입력받음 slist.append((w, h)) #학생 스펙 리스트에 입력함 #브루트포스 알고리즘 진행 for a in slist: #등수 지정할 학생 지정 rank = 1 #초기 등수는 1로 시작 for b in slist: #비교대상 학생 지정 if a[0] 2022. 9. 20.
Baekjoon Training #25304 #25304 x = int(input()) n = int(input()) sum = 0 for i in range (n): a,b = map(int,input().split()) sum += a*b if x == sum: print("Yes") else: print("No") 반복문에 새로운 문제가 등록되어 풀어보도록하였다. 특별한 for문이라기 보다는 단순하게 map을 활용하여 여러값을 반복적으로 입력받고 0으로 설정해놓은 sum에 계속해서 더해주었다. 입력이 종료되면 처음 입력해준 x값과 sum의 값을 비교하여 Yes 또는 No를 출력하였다. 2022. 9. 18.
Baekjoon Training #11050 #11050 이항계수는 이와같이 계산되므로 위의 식을 코드로 작성해준다. from math import factorial n,k=map(int, input().split()) ans=factorial(n)//(factorial(k)*factorial(n-k)) print(ans) math 모듈에서 factorial을 import해왔다. factorial 함수를 이용하여 위 식을 구현해주고 출력하였다. 2022. 9. 8.
Baekjoon Training #1037 #1037 a=int(input()) n=list(map(int,input().split())) print(min(n)*max(n)) 첫째줄로 약수의 개수를 입력받고 둘째줄로 약수들을 입력받는다. 약수의 최소값과 약수의 최대값을 곱하면 찾고자하는 N의 값을 구할 수 있으므로 min, max함수를 이용하여 출력한다. 2022. 9. 5.
Baekjoon Training #5086 #5086 while True: a, b = map(int, input().split()) if a == 0 and b == 0: break elif b % a == 0: print('factor') elif a % b == 0: print('multiple') else: print('neither') while문을 통해서 a와 b가 동시에 0이 되는 시점까지 반복하여 입력을 받는다. 조건 4가지를 걸어준다. 첫번째는 a와 b가 동시에 0이 되는 경우로 break를 걸어준다. 두번째는 b가 a로 나누어 떨어지는 경우로 factor를 출력해준다. 세번째는 a가 b로 나누어 떨어지는 경우로 multiple을 출력해준다. 마지막으로 이 모든 경우에 해당되지 않으면 neither를 출력해준다. 2022. 9. 4.
Baekjoon Training #1085 #1085 x, y, w, h = map(int, input().split()) way1 = w - x way2 = h - y print(min(x, y, way1, way2)) 가로의 길이가 w 세로의 길이가 h인 직사각형안에 있는 점인 (x,y)에서 직사각형의 변까지 가는 거리의 최솟값을 구하는 문제인데 처음에는 착각을 하고 x,y좌표에서 x,y축의 양의 방향으로 이동시켜서 직사각형의 변까지 도착하는 경우만 고려를 하여 print(min(way1, way2))라고 코드를 작성하여 오답이 나왔었다. x, y축의 음의 방향으로 이동을 시켜도된다는 것을 인지하고 min함수에 4개의 인자 x, y, way1, way2를 넣어서 코드를 작성하였다. 여기서 way1과 way2는 각각 w-x와 h-y로 (x,y).. 2022. 8. 24.
Baekjoon Training #3009 #3009 x = [] y = [] for i in range(3): a, b = map(int, input().split()) x.append(a) y.append(b) for i in range(3): if x.count(x[i]) == 1: a = x[i] if y.count(y[i]) == 1: b = y[i] print(a, b) 단순히 세점이 주어지고 직사각형을 만드는 네번째 점을 찾는 문제였다면 고려해야할 사항이 많았겠지만 축에 평행한 직사각형을 만드는 문제였기에 문제는 단순해졌다. 우선 리스트x, y를 만들어서 각각 점들의 x축 좌표의 정보와 y축 좌표의 정보를 담아둔다. 축에 평행한 직사각형이기에 x던 y던 하나의 값을 최소 두점이 갖고 있어야하기 때문에 이점을 이용하여 리스트 x, y에.. 2022. 8. 19.
728x90