본문 바로가기

알고리즘

백준 알고리즘 10989. 수 정렬하기 3 백준 사이트 최백준씨의 재치가 돋보이는 문제입니다 :) 천만개의 수를 입력받고 정렬해서, 그 수를 순서대로 출력하시오! 라는 문제인데, 메모리 제한이 고작 8M입니다. 과연 풀 수 있을까요? https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 입력되는 수는 10,000 이하의 자연수입니다. 최소로 잡을 수 있는 타입은 int 형이고 int형은 2byte의 메모리 공간을 소모하지요. 10,000,000개의 숫자를 저장하려면 20,000,000 byte인데 그냥 저장만.. 더보기
백준알고리즘 11399. ATM 해설과 소스 백준 알고리즘 11399번을 풀이했는데, 엉뚱한 문제로 꽤나 고생했습니다 ㅎ.. ​ https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 분명 제 PC에서는 랜덤으로 1000건의 데이터를 생성해서 풀이해봐도 이상이 없는데 백준 사이트에서 채점만 하면 틀리는 것이 문제였었는데, 천신만고 끝에 문제원인을 발견하였습니다. ​ 원인은 memcpy 명령어에 있었습니다. memcpy 명령은 대상 주소에 원본주소를 특정길이만큼 복사하는 기능인데요. ​ 만일 long 포인터가 다음과 같이 정의.. 더보기
백준 1788. 피보나치 수열 확장 지난번에 한번 다룬적이 있던 피보나치 수열문제의 확장판 문제입니다 :) https://www.acmicpc.net/problem/1788 1788번: 피보나치 수의 확장 첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net https://youtu.be/zFJN03V-iBA 세상에 영원한 것은 없습니다. 지극히 높으신 신께서 사람을 감동케 하셔서 쓰신 성서에는 다음과 같이 말씀이 씌어져 있습니다. 사랑은 언제까지나 떨어지지 아니하되 예언도 폐하고 방언도 그치고 지식도 폐하리라 우리는 부분적으로 알고 부분적으로 예언하.. 더보기
백준 2965번. 캥거루 세마리 해설, 소스 오늘 또 백준 문제 풀이 러쉬를 해서 오랜만에 또 백준 문제를 하나 다뤄볼텐데요 :) 캥거루 3마리가 서로 다른 정수의 좌표에 있는데 바깥쪽에 있는 캥거루가 다른 2마리 캥거루 사이의 빈 정수 지점에 점프한다고 칠 때 최대 몇번까지 움직일 수 있는 지는 구하는 문제입니다. ​ https://www.acmicpc.net/problem/2965 2965번: 캥거루 세마리 문제 캥거루 세 마리가 사막에서 놀고 있다. 사막에는 수직선이 하나 있고, 캥거루는 서로 다른 한 좌표 위에 있다. 한 번 움직일 때, 바깥쪽의 두 캥거루 중 한 마리가 다른 두 캥거루 사이의 정수 좌표로 점프한다. 한 좌표 위에 있는 캥거루가 두 마리 이상일 수는 없다. 캥거루는 최대 몇 번 움직일 수 있을까? 입력 첫째 줄에 세 캥거루의.. 더보기
백준 알고리즘 1022번. 소용돌이 예쁘게 출력하기 소스 및 해설 빙글 빙글~ 세상은 어지럽지만 그가운데 고요하고 돌지 않는 곳이 있지요. 마치 태풍의 눈처럼 말입니다. 비록 저 높은 절벽으로부터 폭포가 쏟아지는 가운데 있지만, 그 뒷편에 아주 안전한 장소에서 보살핌을 받는 어린 새처럼 하나님을 신뢰하고 의지하는 사람들 또한 하나님께서 지키시고, 하나님께서는 그러한 사람들을 끝까지 포기하지 않고 저 천국으로 인도하실 수 있는 분이심을 믿습니다 :) 여호와께서 그를 황무지에서, 짐승의 부르짖는 광야에서 만나시고 호위하시며 보호하시며 자기 눈동자같이 지키셨도다 ( 성서 신명기 32장 10절 말씀 ) 이번 백준 알고리즘 문제는 빙글 빙글 소용돌이가 돌아가는 순서대로 숫자를 매겨서 표시하는 문제인데요. 은근히 함정들이 있더라구요. ​ https://www.acmicpc.net.. 더보기
백준 알고리즘 5567. 결혼식 빰빠빠바~ 빰빠빠바~ 화려한 음악소리와 함께 결혼식이 시작되었습니다. ​ https://www.acmicpc.net/problem/5567 5567번: 결혼식 문제 상근이는 자신의 결혼식에 학교 동기 중 자신의 친구와 친구의 친구를 초대하기로 했다. 상근이의 동기는 모두 N명이고, 이 학생들의 학번은 모두 1부터 N까지이다. 상근이의 학번은 1이다. 상근이는 동기들의 친구 관계를 모두 조사한 리스트를 가지고 있다. 이 리스트를 바탕으로 결혼식에 초대할 사람의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이의 동기의 수 n (2 ≤ n ≤ 500)이 주어진다. 둘째 줄에는 리스트의 길이 m (1 ≤ m www.acmicpc.net 상근이라는 친구가 결혼식에 친구도 초대하고 친구의 친구까지는 초대.. 더보기
백준 알고리즘 1748. 수 이어쓰기 원본문제 링크 https://www.acmicpc.net/problem/1748 1748번: 수 이어 쓰기 1 첫째 줄에 N(1≤N≤100,000,000)이 주어진다. www.acmicpc.net 만약 1 2 3 4 5 6 7 8 9 10 11 12 ... 이렇게 숫자를 계속 써내려갈때 1부터 100까지의 숫자를 하나하나씩 센다면 숫자 갯수는 총 몇개일까요? 예를 들면 12라는 숫자는 1과 2를 각각 세어서 2개로 셉니다. ​ 그러면 총 192개입니다. 어떻게 그렇게 되냐구요?? 0~9 : 9개 10~99 : 90개 X 2자리 = 180개 100 : 1개 X 3자리 = 3개 모두 합치면 192개가 딱 나오지요. ​ 그렇다면 1부터 12345까지 이런 식으로 센다면 숫자 갯수는 몇개나 될까요? 컴퓨터 없이.. 더보기
백준 알고리즘 1934번. 최소공배수 초등학교 산수(요새 말로는 수학) 시간에 "최소공배수"를 구해본 기억이 있으신가요? 기억이 가물가물한 분들이 더욱 많을듯 해서 다시 상기시켜드립니다. ​ 2개의 수의 배수중 가장 작은 수가 바로 최소공배수입니다. 이를 테면 12과 20의 배수이면서 그중 가장 작은 배수는 12x20=240이 아니라, 60인 것이지요. 60이란 숫자는 12의 배수인 동시에 20의 배수이기도 합니다. ​ 이런 최소공배수를 구하는 방법이 있습니다. 알고리즘 풀이로 널리 알려진 유클리드 호제법이란 방법도 있지만, 크레이는 그냥 클래식한 방법으로 설명 및 풀이를 진행하도록 하겠습니다. ​ 수학 시간의 배운 내용을 그대로 펼쳐볼까요? 맨 처음 2개의 숫자를 나란히 씁니다. 두 수를 동시에 나눌수 있는 숫자를 왼쪽에 적어줍니다. 그리.. 더보기