728x90
728x90

2017/11 24

백준 알고리즘] 4948 - 베르트랑 공준(ACM-ICPC 2011)

시간 제한 : 1초메모리 제한 : 128MB 문제베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n ≤ 123456) 입력의 마지막에는 0..

백준 알고리즘] 2399 - 거리의 차이

시간 제한 : 2초메모리 제한 : 128MB 문제수직선에 n개의 점이 찍혀 있다. 각각의 점의 x좌표가 주어졌을 때, n^2개의 모든 쌍에 대해서 거리의 차이를 더한 값을 구하는 프로그램을 작성하시오. 즉, 모든 i, j에 대해서 |x[i] - x[j]|의 합을 구하는 것이다. 입력첫째 줄에 n(1≤n≤10,000)이 주어진다. 다음 줄에는 x[1], x[2], x[3], …, x[n]이 주어진다. 각각은 0 이상 1,000,000,000 이하의 정수이다. 출력첫째 줄에 답을 출력한다. 소스코드 #include #include using namespace std; int main(void) { int n; long long *list, sum = 0; cin >> n; list = new long lon..

백준 알고리즘] 1159 - 농구 경기(COCI 2013/2014)

시간 제한 : 1초메모리 제한 : 128MB 문제상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다. 내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다. 국가대표팀의 감독이 된 이후에 상근이는 매우 게..

알고리즘 공부 사이트 목록

알고리즘 공부는 책으로만 해서, 실질적으로 코드를 다루어보지 못하고 대강의 개념만 알고 있는 사람들이 많은 것 같다. 그런 사람들 중 대부분이 애당초 이쪽에 흥미가 없는 사람들이겠지만, 정말 정보력이 떨어져서 흥미가 있음에도 불구하고 배운 것을 활용하지 못하는 사람들이 있을까 싶어 정리해놓은 것들을 올린다. 알고리즘 역시 기술이며, 많이 쓸수록 숙달되며 응용해서 사용할 수 있다. 또한 기술이기 때문에 타고날 수도 타고나지 않을 수도 있다. 그것을 극복하는 게 노력이겠지만... 아무튼, 필자는 개인적으로(정확히 말하자면 필자가 봤던 책에서, 주변에서의 이야기에 따르면), 알고리즘 역시 시험 공부 하듯 여러 유형의 문제를 다양하게 풀고 다루면서 실력을 늘려나가는 쪽이 맞다고 생각한다. 이를 적절히 실전에서 ..

C++] 예외 및 예외 처리 기본

프로그램이 실행 중 오동작이나, 결과를 달리 하게 만드는 예상하지 못한 상황 발생을 예외(Exception)라고 하며, 이를 적절히 처리해주는 것을 예외 처리(Exception Handling)라고 한다. 대부분의 학교에서 처음 프로그래밍에 입문해서 코드를 짜기 시작하면, 기능적인 부분에 집중을 하고 책을 따라가기 때문에 이 예외에 대해서 고려할 일이 거의 없어서 이쪽 분야에 관심을 두지 않는 학생들을 졸업장을 받을 때까지 신경 쓰지 않는 경우도 간혹 있다. 만약 자신이 소프트웨어 분야에 관심이 많고, 그로 인해서 자신의 경험을 쌓고자 개인적인 프로젝트를 진행하거나, 학년이 올라 텀 프로젝트를 실시해서 그럴싸한 프로그램을 완성해야 하는 상황이 오게 되면, 예상하지 못한 곳에서 발생하는 문제들을 접하고 해..

C,C++] C++코드와 C 코드의 링크, Mangling 규칙

C언어는 다른 언어들에 비해(C++, Java 등) 역사가 길어 그동안 작성된 라이브러리, 소스가 많이 존재하며 이것들이 각기 다른 분야에서 활발히 사용되고 있다. 만일 C++ 프로그램을 개발할 때 기존에 작성된 C의 라이브러리, 소스를 사용하게 될 경우가 있는데 이때 C++ 프로그램에서 C 코드를 연결해 사용하는 방법을 알고 있다면 비교적 쉽게 다룰 수 있다. 서로 다른 언어를 연결하는 것은 쉬운 일은 아니지만, C++은 C의 내용들이 남아 있는 분들이 있어 상대적으로 쉬운 편이다. 모든 컴파일러가 목적 코드(obj)를 만들 때, 소스코드의 변수, 함수, 클래스 등의 이름을 변형해 저장한다. 이를Name Mangling(일부 책에서는 이를 이름 규칙이라고 하는데 표현이 애매해 사용하지 않겠다.)이라고 ..

백준 알고리즘] 2959 - 거북이(COCI 2008/2009)

시간 제한 : 1초메모리 제한 : 128MB 문제거북이는 이제 어떤 것에도 흥미를 느끼지 않는다. 그 이유는 거북이가 300년동안 살았고, 그 동안 모든 것들을 다 해보았기 때문이다. 거북이는 시간을 떼우는 무엇인가를 하려고 한다. 이번 주말에 거북이는 거북이 세계에서 매우 유명한 게임인 "가장 큰 직사각형 만들기"를 해보려고 한다. 이 게임을 시작하기 전에 거북이는 양의 정수 네 개를 머릿 속에 생각해야 한다. 한 방향으로 움직이기 시작하고 90도 회전한 뒤에 새로운 방향으로 움직인다. 이런 식으로 세 번 90도 회전을 하고, 네 번 앞으로 움직여서 선 분 네 개를 만들어야 한다. 거북이가 선분을 그릴 때 움직여야 하는 걸음의 수는 생각해 놓은 네 정수중 하나이다. 이 때, 한 정수를 각각 한 번씩 사..

C++] STL(Standard Template Library)이 무엇인가?

STL(Standard Template, Library;표준 템플릿 라이브러리)은 일반적인 대학생들은 접할 일이 거의 없다. 대학의 C++ 강의에서는 가르칠 수 없는 환경일 수밖에 없는 것이, C를 첫 프로그래밍 언어로 배우면서 반복문에서, 포인터에서 멘탈이 터지면서 흥미를 날린 상태로 어거지로 C++을 배우기 때문이라고 생각한다. 대학에서 사용하는 C++ 교재에서는 기본적으로 템플릿과 STL을 부록 형식으로라도 다루기 때문에 충분히 정보를 제공하고 있지만, C++에서 OOP(Object-Oriented Programming;객체 지향 프로그래밍) 개념을 다루는 것에만 초점을 두고 강의를 진행하는 경우가 많기 때문에 쳐다볼 일도 거의 없다. 덕분에(?) 대부분의 대학생들은 템플릿과 더불어 STL이라는 용..

백준 알고리즘] 2745 - 진법 변환

시간 제한 : 1초메모리 제한 : 128MB 문제B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11, ..., F: 16, ..., Y: 34, Z: 35 입력첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다. 출력첫째 줄에 B진법 수 N을 10진법으로 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { char arr[100]; int len, sum = 0, n; cin >>..

728x90