[백준 알고리즘] 10809번 : 알파벳 찾기
2019. 7. 8. 17:05
알고리즘/BaekJoon
문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 예제 입력 1 baekjoon 예제 출력 1 1 0 -1 -1 2 -1 -1 -1 -1 4 3 -1 -1 7 5 ..
[C++] 소수점 관련 함수 ceil(), floor(), round()
2019. 7. 7. 15:58
프로그래밍 언어/C++
소수점에 관련된 함수 3가지가 있다. 소수점 이하 모두 올림, ceil() 소수점 이하 모두 버림, floor() 소수점 이하 반올하고 버림, round() 에 대해서 정리해보자. 소수점 이하 모두 올림, ceil() 소수점 이하 숫자가 있다면 다 버리고 1을 더해주는 함수이다. #include double ceil (double x); float ceil (float x); long double ceil (long double x); double ceil (T x); // additional overloads for integral types 예제 #include #include using namespace std; int main(){ cout
알고리즘 Big-O 표기법
2019. 7. 4. 00:27
알고리즘/개념정리
알고리즘 공부를 하다가 시간복잡도에 대해서 잘 몰랐었는데 이 유튜뷰 영상을 통해 더 확실하게 알게 되었던 것 같다. 나중에 따로 정리해봐야 겠다. 너무 설명을 잘해주셔서 아래에 영상을 가져와봤다. 빅오 표기법을 모르는 사람이 있다면 이 영상을 보고 한번에 이해할 것 같다. 좋은 강의 너무 감사합니다!
완전 탐색 (brute force) 알고리즘
2019. 7. 4. 00:18
알고리즘/개념정리
개념 정리 브루트 포스 또는 완전 탐색이라고 불리우는 알고리즘이다. brute "짐승, 짐승같은, 난폭한" + force "힘, 무력, 폭력" 굳이 해석하자면 짐승같은 힘, 난폭한 힘으로 해석될 수 있다. 또는 완전 탐색 알고리즘이라고 불리는데 완전 탐색이라는 말 그대로 모든 경우의 수를 탐색하는 알고리즘이라고 말할 수 있다. 따라서, 간단하게 말하면 모든 경우의 수를 직접 다 해보는 알고리즘이다. 특징 부르트 포스는 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식 으로 문제를 푸는 것 이다. 성공한다는 가정하에 항상 정확도 100%를 보장한다는 점에서 자원만 충분하면 가장 무서운 방법이다. 무식하게 보일 수 있지만 암호학에서는 가장 확실한 방법으로 통용되고 있다. 그래서 브루트 포스의 가장 큰 장점..
[백준 알고리즘] 1904번 : 01타일
2019. 7. 3. 05:14
알고리즘/BaekJoon
문제 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이의 공부를 방해하기 위해 0이 쓰여진 낱장의 타일들을 붙여서 한 쌍으로 이루어진 00 타일들을 만들었다. 결국 현재 1 하나만으로 이루어진 타일 또는 0타일을 두 개 붙인 한 쌍의 00타일들만이 남게 되었다. 그러므로 지원이는 타일로 더 이상 크기가 N인 모든 2진 수열을 만들 수 없게 되었다. 예를 들어, N=1일 때 1만 만들 수 있고, N=2일 때는 00, 11을 만들 수 있다. (01, 10은 만들 수 없게 되었다.) 또한 N=4일 때는 0011, 0000, 1001, 1100, 1111 등 총 5개의 2..
[백준 알고리즘] 10951번 : A + B - 4
2019. 7. 3. 02:48
알고리즘/BaekJoon
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 > a >> b){ cout a >> b; cout
[백준 알고리즘] 10818번 : 최소, 최대
2019. 7. 3. 02:41
알고리즘/BaekJoon
문제 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. 출력 첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다. 예제 입력 1 5 20 10 35 30 7 예제 출력 1 7 35 내가 작성한 코드 (C++ 성공) #include using namespace std; int main(){ int n; cin>>n; int num[n+1]; int min = 1000000; int max = -1000000; for(int i=..
[백준 알고리즘] 8958번 : OX퀴즈
2019. 7. 3. 02:27
알고리즘/BaekJoon
문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다. 출력 각 테스트 케이스마다 점수를 출력한다. 예제 입력 1 5 OOXXOXXOOO OOXXOOXXOO OXOXOXOXOXOXOX OOO..