본문 바로가기
  • 紹睿: 자유롭고 더불어 사는 가치있는 삶
[선택 정렬] Selection sort - python 출처:https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC Selection Sort시간복잡도: 선택 정렬(selection sort)은 in-place 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 1. 주어진 리스트 중 최솟값을 찾는다2. 그값을 맨 앞에 위치한 값과 교체한다.3. 맨 처음 위치를 뺀 나머지를 같은 방법으로 교체한다. 9 1 6 8 4 3 2 0을 그림으로 표현해 보았당. 123456789101112def selection_sort(a): for i in range(len(a)-1): min_index = i for j in range(i+1, len(a)): if a[min_index] > a[j]: mi.. 2018. 6. 19.
[삽입 정렬] Insertion sort - python 출처: https://ko.wikipedia.org/wiki/%EC%82%BD%EC%9E%85_%EC%A0%95%EB%A0%AC Insertion Sort삽입 정렬(Insertion sort)은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입한다. 배열이 길어질수록 효율이 떨어지지만, 구현이 간단하다.선택정렬이나 거품정렬과 같은 알고리즘과 비교하면, 안정적인 정렬이고 in-place 알고리즘이다.(공간복잡도: 원소 자체를 저장하는 메모리 말고 추가적으로 필요한 임시 메모리에 대한 복잡도) 1234567891011121314def insert_sort(a): for i in range(1, len(a)): j = i-1 key = a[i] while .. 2018. 6. 19.
[버블 정렬] Bubble sort - python 출처: https://ko.wikipedia.org/wiki/%EA%B1%B0%ED%92%88_%EC%A0%95%EB%A0%AC Buuble Sort시간복잡도: 거품 정렬(Bubble sort)은 두 인접한 원소를 검사하여 정렬하는 방법이다. 시간복잡도가 {\displaystyle O(n^{2})}로 상당히 느리지만, 코드가 단순하기 때문에 자주 사용된다. 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어진 이름이다. (시간복잡도: 문제를 해결하는데 걸리는 시간) 12345678910111213141516def swap(x,i,j): x[i], x[j] = x[j], x[i] def bubble_sort(a): for size in reversed(range(len(a))): for.. 2018. 6. 19.
[백준 알고리즘] 1475번 방 번호 문제:다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최소값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.) 입력:첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다. 풀이1) 6, 9는 6또는 9가 될수있다.그러므로, 9를 6으로 처리하여 1/2 처리했다. 123456789101112131415161718192021num = input() sets = {'0': 0, '1': 0, '2'.. 2018. 6. 18.
[리그오브레전드] 플레이메이커 리신이나왔다 ㅋㅋㅋㅋㅋㅋㅋ플레이메이커 리 신님이나왔다 상자갓갓 헤헤 이제 합치러가야지 ㅡㅡ안해 ㅎ.ㅎ.... 용사냥꾼 신짜오 + 프로젝트 카타 + 플레이메이커 리 신 합친게 이분임 ㅡㅡ 안해 2018. 6. 15.
[백준 알고리즘] 1924번 2007년 오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.입력첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.출력 첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 달의 규칙을 찾아서 하려다가.. 굳이 그럴필요가 있나싶어서 (2007년이라고 못밖았으니까)그냥, months에 각 달의 일 개수를 더하라고 시켰다. 맘편하다 1234567891011M, D = input().split()M = int.. 2018. 6. 14.
[자이언츠워] 하루만에 지웠다 ​ 띠요오옹 이번 게임빌 신작 모바일게임 자이언츠워.. 음 뭘 하면 되는지 잘 모르겠다 1,2 까지는 엄청 쉽고 갑자기 3부터는 애매모호해졌다 ㅠㅠ 골드도 어떻게 벌어야하는지 모르겟고 결국 지워버렸당 ㅋㅋㅋㅋㅋㅋㅋㅋ 쩝.. 아쉽다 뭔가 짬뽕된 게임같아 ㅠㅠ히웅 2018. 6. 13.
[백준 알고리즘] 10250번 ACM 호텔 ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다.문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접.. 2018. 6. 12.
[백준 알고리즘] 1193번 분수찾기 이런식으로 진행이 되는데, 내가 찾은 규칙은 아래와같다. 1) 홀수분자: 3 -> 2 -> 1 (-1)분모: 1 -> 2 -> 3 (+1) 2) 짝수분자: 1 -> 2 (+1)분모: 2 -> 1 (-1) 이렇게 진행 된다는걸 알수 있다! 이제 input()받은 값이 어느번호에 속하는지만 알면 구할 수 있당!그럼 2만! 123456789101112131415num = int(input())cnt = 0sum = 0 while(True): cnt += 1 sum += cnt if num 2018. 6. 11.