[C++/STL] 정렬 (sort) 함수 사용하기
2020. 7. 19. 14:52
Programming/C│C++
1. 언제 사용하는가? 정렬은 가장 기본적인 알고리즘임과 동시에 중요한 알고리즘이다. 하지만 그 구현이 쉽지 않고, 실제로 구현해서 사용하기에는 오류가 많기에 문제 하나 하나를 풀때마다 정렬을 코딩하는 것은 비현실적이다. 이를 위해, C++의 STL에서는 사용자가 빠르게 정렬할 수 있는 함수를 제공하는데, 이것이 'sort' 함수이다. 퀵소트를 기반으로 만들어졌다고 한다. 2. 사용 방법 다음과 같이, 'algorithm' 헤더를 include하여 사용한다. vector를 정렬하는 방법과, 배열을 정렬하는 방법은 다르므로 사용법을 익혀야 한다. 기본적으로 vector는 begin와 end 지점을 명시해주며, 배열은 그 크기를 입력해주는 것으로 사용한다. #include #include #include u..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEokaX%2FbtqFNQJ6syF%2FH7zdWGNjFgZSy5QbBNtbOK%2Fimg.png)
[백준/11729] 하노이 탑 이동 순서 (C++)
2020. 7. 18. 00:10
Programming/백준 문제풀이
1. 문제 2. 접근 방법 자료구조를 배울 때, '재귀' 하면 바로 떠오르는 것이 이 문제이다. 그 만큼 가장 재귀를 잘 설명하는 문제가 되며, 재귀의 강력함을 잘 보여주는 사례라고도 할 수 있다. 접근 방법은 이렇다. 첫 장대를 A, 가운데 장대를 B, 목적지 장대를 C라고 한다면 N개의 원판을 이동시키려면, N - 1 개의 원판을 B에 옮긴 후, 나머지 1개를 C에 옮긴다. 그 후, B에 있는 N - 1 개의 원판을 다시 C로 옮기면 되는 것이다. 이러한 접근 방식은 또 다시 N - 2개의 원판을 옮기는 문제로 분할되어 분할 정복 방식으로 문제가 풀어지는 것이다. 3. 코드 #include #include void hanoi(int from, int to, int by, int num) { if (n..
[C++] C/C++ 에서 Pi (원주율) 사용하는 법
2020. 6. 9. 20:14
카테고리 없음
#define _USE_MATH_DEFINES #include double R = 2.0; double circle = M_PI * R * R; 1. 원주율을 사용하는 경우 C/C++에서 문제풀이를 하다보면, 우리가 흔히 3.141592... 로 알고 있는 원주율을 사용하는 일이 많다. 간단하게는 원의 넓이는 구하는 프로그램부터, 다양한 공식이 적용된 문제들이 그러하다. 물론 본인이 원주율(Pi)를 소수점 밑으로 많이 외우고 있다면 괜찮지만, 그렇지 않은 경우에는 다음과 같은 방법을 사용하길 추천한다. 2. 구현 #define _USE_MATH_DEFINES #include double R = 2.0; double circle = R * R * M_PI;
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn9uaB%2FbtqEG959euj%2Fk1HXWTQXhEvT42AK07SRK1%2Fimg.gif)
[알고리즘] 가장 빠른 소수 구하기 - 에라토스테네스의 체
2020. 6. 8. 21:04
Programming/알고리즘
1. 소수 구하기 알고리즘에 대하여 알고리즘을 공부하는 사람이라면 누구나 소수를 찾는 문제에 직면하게 된다. 가장 쉽게는 가능한 모든 수 범위에서 소수를 구할 수 있지만, 범위가 클 경우 시간이 매우 오래 걸린다. 그러므로 큰 범위에서 소수를 찾기 위해서는 효율적인 알고리즘을 사용할 필요가 있는데, 여기에서 알아볼 알고리즘이 '에라토스테네스의 체' 이다. 2. 에라토스테네스의 체 '에라토스테네스(Eratosthenes)의 체'란, 다음과 같이 반복적인 과정을 반복함으로서 주어진 범위에서의 소수를 찾는 것이다. (1) 2부터 시작해, 2를 제외하고 2의 배수들을 모두 제외시킨다. (2) 3부터 시작해, 3을 제외하고 3의 배수들을 모두 제외시킨다. (3) 4는 이미 제외되었으므로, 5부터 시작하고 5를 제..
[C++] getline() 사용시, 개행문자가 같이 읽히는 문제 해결법
2020. 5. 26. 21:47
카테고리 없음
1. getline() 사용시의 문제점 getline(cin, s) 와 같은 함수는 문자열 한 줄을 읽기에 매우 편리한 함수이다. 하지만 getline을 사용하기 전에 cin을 통해 입력받은 경우가 있다면 개행문자('\n')가 같이 읽힘으로서 getline이 제대로 수행되지 않는 경우가 생긴다. 이를 방지하기 위해서는 다음과 같은 테크닉이 필요하다. 2. 해결법 #include #include using namespace std; int main(void) { int N; string s; cin >> N; cin.ignore(); getline(cin ,s); return 0; } 위의 코드에서와 같이, cin >> N 등으로 입력을 받은 상황이라면 getline 함수를 호출하기 전에 cin.ignor..
[C++] string의 구분자(delimiter)를 이용한 파싱 처리하기
2020. 5. 24. 22:27
Programming/C│C++
1. 구분자(delimiter)를 이용한 파싱 처리란? 가장 대표적인 예는 엑셀의 .csv 파일이다. .csv 파일은 ',' 기호로 셀을 나누고 있는데, 다음과 같은 모양을 갖추고 있다. 서울특별시,인천광역시,부산광역시 위의 .csv 파일을 ',' 구분자로 구분하면 다음 3개의 항목을 얻을 수 있는 것이다. (1) 서울특별시 (2) 인천광역시 (3) 부산광역시 이와 같이 특정한 구분자를 사용해서 string을 파싱하는 경우가 종종 있는데, 이 때 사용하는 것이 stringstream 객체와 getline 함수이다. 2. 코드 (내용 추가 예정) #include #include #include int main(void) { string s = "seoul,busan,incheon"; stringstream..