본문 바로가기

728x90

전체 글

[smashthestack - io] level8 write up level8@io:~$ ls -l total 28 -rw-r--r-- 1 level8 level8 27617 Jul 30 04:35 tags smashthestack의 io문제를 마저 풀어보겠습니다. -r-sr-x--- 1 level9 level8 6662 Jan 26 2012 level08 -r-sr-x--- 1 level9 level8 14343 Sep 17 2010 level08_alt -r-------- 1 level8 level8 2355 May 29 2016 level08_alt.cpp -r-------- 1 level8 level8 662 May 29 2016 level08.cpp 으악 또 cpp이군요.. 그래도 함 풀어봤으니 자신감을 갖고 해봤습니다.. // writen by bla for.. 더보기
[백준알고리즘] 1037번: 약수 -Python [백준알고리즘] 1037번: 약수 -Python https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다. www.acmicpc.net 수들이 주어지면 그 수들을 진짜 약수로 갖는 수 N을 구하는 문제이다. N을 구하는건 쉽다. 그저 약수 중 최솟값과 최댓값을 곱해주면 된다. 약수를 구할때를 생각해보면 된다. 코드는 아래와 같다. import sys N = int(sys.stdin.readline()) factors = list(map(int, sys.stdin.r.. 더보기
[백준알고리즘] 5086번: 배수와 약수 -Python [백준알고리즘] 5086번: 배수와 약수 -Python https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 문제 4 × 3 = 12이다. 이 식을 통해 다음과 같은 사실을 알 수 있다. 3은 12의 약수이고, 12는 3의 배수이다. 4도 12의 약수이고, 12는 4의 배수이다. 두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오. 첫 번째 숫자가 두 번째 숫자의 약수이다. 첫 번째 숫자가 두 번째 숫자의 배수이다. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스 www.acmicpc.net 단계별로 문제풀기 수학3의 첫 문제이다. 정수론과 조합론....이라고 한다.... 더보기
[백준알고리즘] 1541번: 잃어버린 괄호 -Python [백준알고리즘] 1541번: 잃어버린 괄호 -Python https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. www.acmicpc.net 단계별로 풀어보기에서 그리디 알고리즘의 마지막 문제이다. 이 문제는 괄호를 '+'와 '-'들 사이에 아무 데나 넣어도 된다는 점이 중요하다. 1+2+3-3+4+5 = 12 이지만 괄호를 다음과 같이 넣으면 결과가 달라진다. 1+2+3-(3+4+5) = -6의 결과가 나온다. 이.. 더보기
[백준알고리즘] 2217번: 로프 -C [백준알고리즘] 2217번: 로프 -C https://www.acmicpc.net/problem/2217 2217번: 로프 N(1≤N≤100,000)개의 로프가 있다. 이 로프를 이용하여 이런 저런 물체를 들어올릴 수 있다. 각각의 로프는 그 굵기나 길이가 다르기 때문에 들 수 있는 물체의 중량이 서로 다를 수도 있다. 하지만 여러 개의 로프를 병렬로 연결하면 각각의 로프에 걸리는 중량을 나눌 수 있다. k개의 로프를 사용하여 중량이 w인 물체를 들어올릴 때, 각각의 로프에는 모두 고르게 w/k 만큼의 중량이 걸리게 된다. 각 로프들에 대한 정보가 주어졌을 때, 이 로프들을 www.acmicpc.net Greedy Algorithm이 DP보다는 역시 생각하기가 쉬운 것 같다. 일단 위 문제를 풀기 위해서.. 더보기
[CPU scheduling] SJF(Shortest Job First) & SRTF(Shortest Remaining Time First) 백준알고리즘 11399번을 풀다가 생각난김에 머리 속에 있던 내용들을 정리하려고 한다. SJF(Shortest Job First)란 CPU가 scheduling을 할때 실행시간이 짧은 프로세스부터 우선순위로 처리하는 방식으로, 가장 최적의 평균 대기시간을 제공하는 방식이다. 하지만 SJF는 실제로 적용되기 어려운 점이 있다. 프로세스마다 얼마나 CPU를 이용해야하는지 돌리기 전에는 알 방법이 없기 때문이다. 그래서 계산을 통한 예측으로 시간을 판단한다. 예를들면 다음과 같다. 프로세스 p1, p2, p3, p4가 각각 실행시간 5, 7, 2, 4의 실행시간을 갖고 CPU를 점유하기를 대기하고 있을 떄 전체 대기 시간의 합이 최소가 되기 위해서는 p3-> p4-> p1-> p2 순서대로 처리가 되어져야한다.. 더보기
[백준알고리즘] 11399번: ATM -C, Python [백준알고리즘] 11399번: ATM -C, Python https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 그리디 알고리즘의 대표적인 예라고 생각하는 문제이다. 이 문제는 CPU scheduling 기법 중 하나인 SJF(Shortest Job First)을 알고 있다면 쉽게 풀 수 있는 문제이다. 이 문제도 마찬가지로 처리시간이 짧은 순서대로 정렬을 해서 처리를 해주면 된다. 다른 분들은 이 부분을 위해서 시간복잡도가 빠른 퀵 정렬 등을 사용해서 정렬을 해주었지만, 여기서 .. 더보기
[백준알고리즘] 1931번: 회의실배정 -Python [백준알고리즘] 1931번: 회의실배정 -Python https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 아랫부분에 새로 푼 방식의 풀이도 추가했다. 이번 문제도 그리디 알고리즘을 이용하는 문제이다. 시작시간과 끝나는 시간이 주어질 때 회의실을 이용할 수 있는 최대 횟수를 찾는 문제이다. 여기서는 문제에 써있는 "단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다." 이 부분이 중요하다. 즉 회의의 시작.. 더보기

728x90