참고: https://www.acmicpc.net/problem/1427 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 문제와 예제를 보자마자 든 생각은 입력받은 것을list로 형변환하면 각 숫자가 쪼개져서 저장되기 때문에 해당 리스트를 역순으로 정렬하는 것에 대해 생각했다. from sys import stdin as ss N=sorted(list(map(int, ss.readline().rstrip())), reverse=True) print(*N,sep='') N을 그대로 출력하면 리스트 형태로, *을 입력하면 해당 리스트를 언패하여 출력할 수 있다. (참고: https://rabo0313.tistory.com/entry/Python-list%EC%95%9E%EC%97%90-%EB%B6%99%EC%9D..
참고: https://www.acmicpc.net/problem/10989 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 이번 문제는 아무 생각없이 풀면 안되는 것이 시간 제한과 메모리 제한이 걸려있어서 N의 수가 크기때문에 배열을 사용하면 시간 초과에 걸리게 된다. 리스트를 받지 못하기 때문에 sort 또한 사용할 수 없다. 그래서 해당 문제의 FAQ에서 힌트를 얻을 수 있었다. (참고: https://www.acmicpc.net/board/view/26132) 힌트는 N의 개수는 1부터 1000만까지지만, 수는 10000보다 작거나 같은 자연수라는 것이다. 정렬 함수, 리스트를 사용하지 않고 푸는 방법은 다음과 같다. import sys ss = sys.stdin.readline N=int(ss()) d..
참고: https://www.acmicpc.net/problem/2750 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 해당 문제는 간단하게 sort 함수를 사용해서 풀 수 있지만, 문제의 설명을 보고 기본으로 돌아가서 풀어봐야겠다는 생각을 했다. 그래서 총 3가지의 방법으로 정렬을 시도하였는데, N=int(input()) data=[] for _ in range(N): data.append(int(input())) for j in range(N): for i in range(N-1): temp=0 if data[i] > data[i+1]: temp=data[i+1] data[i+1]=data[i] data[i]=temp for i in range(len(data)):print(data[i]) 순차적으로 앞..
참고: https://www.acmicpc.net/problem/11653 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 예제가 많은 것을 확인해볼 수 있는데, 여기서 N이 1인 경우에는 아무것도 출력하지 않으면 된다. N=int(input()) S=2 while N>1: if N%S==0: N/=S print(S) continue S+=1 간단하게 이러한 코드를 작성하였는데, 해당 코드는 S에 1을 추가하면서 분해가 되는 즉, 나머지가 0이 되는 수에 대해서 출력하게 하였다. 이 코드의 문제점은 N의 값이 커지면 커질수록 S를 더하는 연산의 수가 많아지므로 시간제한에 걸릴 수 있다. 실제로 다음과 같이 풀긴 푸는데 찝찝한 느낌이 든다. 그럼 S라는 변수 없이 바로 출력하는 방법은 없을까? N=int(inp..
참고: https://www.acmicpc.net/problem/2581 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 예제 출력을 보게 되면, 범위에서 소수를 구한 뒤 해당 소수를 모두 더한 값과 해당 소수 중 최솟값을 출력하면 된다. 그리고 범위 내에서 소수가 없으면 -1을 출력하면 된다. import sys I=sys.stdin.readline M=int(I()) N=int(I()) data=[] for i in range(M, N+1): data.append(i) for j in range(2,i): if i%j==0: data.remove(i) break if 1 in data:data.remove(1) if data==[]:print(-1) else:print(sum(data), min(data)..
참고: https://www.acmicpc.net/problem/1193 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 문제를 이해해보자면 그림을 보는 것이 좋다. 그림판으로 간략하게(?) 설명해보자면, 1/1 -> 1/2 -> 2/1 -> 3/1 -> 2/2 -> 1/3 이런 식의 지그재그로 순서가 매겨지면서 1,2,3,4,5,6에 해당하는 분수를 출력으로 나타내야하는 문제이다. 1/2 -> 2/1에 해당하는 라인은 짝수 라인인데, 짝수 라인에서는 시작점부터 끝점까지 분자가 1씩 줄고 분모가 1씩 늘어나는 것을 확인할 수 있다. 반대로 홀수 라인인 3/1 -> 2/2 -> 1/3의 시작점부터 끝점까지 분모가 1씩 줄고 분자가 1씩 늘어나는 것을 확인할 수 있다. N=int(input()) L,E=0,0 w..