본문 바로가기

알고리즘

(63)
백준 - 2581(소수, python) https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 문제 접근 주어진 범위의 소수들의 합과 그 중 최소값을 출력하는 문제 정답 코드 n = int(input()) m = int(input()) ans = [] for i in range(n, m+1): error = 0 if i > 1: # 1만 이하이니 for 문으로 돌려도 될거 같은데? for j in range(2, i): if i %j == 0: error += 1 break if error == 0:..
백준 - 10789(세로읽기, python) https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 문제 접근 문자열을 5번 입력받이 이를 한 글자씩 세로로 읽어 출력하면 되는 문제(공백 없이) 입력받는 문자열의 길이를 모르는 것이 문제 핵심 문자열 최대 길이가 15이므로 문자열 끝에 공백을 추가해 모든 문자열의 길이를 15로 맞춤 이후 출력할때 replace를 활용해 공백을 없앰 정답 코드 words = [] #문자열의 길이는 최대 15 for i in range(5): word = i..
SWEA - 간단한 소인수 분해(1945, python) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pl0Q6ANQDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 접근 2,3 5, 7, 11로 소인수 분해되는 수가 주어졌을 때 각각의 지수를 출력하는 문제 각 소인수로 몇 번 나눠지는지를 구하면 된다. 정답 코드 n = int(input()) for i in range(1, n+1): a = b = c = d = e = 0 num = int(input()) while(num % 2 == 0): a += 1 num /= 2 while(num % 3 == 0..
백준 - 2444(별찍기-7, python) https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 접근 구현 피지컬을 점검하기 좋은 별찍기 문제 문제에서 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. 라고 주어져 복잡하게 계산할 필요는 없었다. n = int(input()) for i in range(1, n+1): print(' '*(n-i)+'*'*(2*i-1)) for i in range(n-1,0,-1): print(' '*(n-i)+'*'*(2*i-1))
백준 - 25206(너의 평점은, python) https://www.acmicpc.net/problem/25206 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 문제 접근 처음엔 단순히 평점을 구한다고 생각해서 과목별 등급 / 과목수로 멋대로 생각했다. 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다. 라는 조건이 문제에 있었고 코드를 수정했다. 정답 코드 dic = {'A+':4.5, 'A0':4.0, 'B+':3.5, 'B0':3.0, 'C+':2.5, 'C0':2.0, 'D+':1.5, 'D0':1.0, 'F':0} tota..
백준 - 11718(그대로 출력하기, python) https://www.acmicpc.net/problem/11718 11718번: 그대로 출력하기 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시 www.acmicpc.net 문제 접근 그냥 입력받은대로 출력하는 문제 단 입력값끝에 종료를 알리는 구문이 아예없어서 따로 예외처리를 해줘야하는 문제 정답코드 while True : try : print(input()) except EOFError: break
백준- 11650(좌표 정렬하기, python) https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline n = int(input()) li = [] for i in range(n): [a, b] = map(int, input().split()) li.append([a, b]) li_sort = sorted(li) for i in range(n): print(li_sor..
백준 - 2164(카드2, python) https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 접근 전형적인 자료구조 활용문제 FIFO 형태이니 큐를 활용하였음 코드 import queue n = int(input()) q = queue.Queue() for i in range(1, n+1): q.put(i) while(q.qsize() != 1): q.get() q.put(q.get()) print(q.get()) 결론은 시간초과...그래서 큐를 안쓰고 문자열을 이용해봤다...결과는..