.. Cover Letter

ㅇ 공부#언어/(C++) 알고리즘 8

(C++) 코딩테스트 2. 자료구조(투포인터, 슬라이딩 윈도우)

참고도서 : Do it! 알고리즘 코딩테스트 C++편 . 김종관 . 이지스퍼블리싱 . 2022 using namespace std를 사용하지 않습니다. 투 포인터 2개의 포인터로 알고리즘의 시간 복잡도를 최적화 하는 것을 말한다. 2018번: 수들의 합 5 (acmicpc.net) 2018번: 수들의 합 5 어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한 www.acmicpc.net 연속된 자연수들의 합으로 나타낼 수 있는가? 예를 들어 15는 7 + 8 혹은 1 + 2 + 3 + 4 + 5 이런식으로 나타낼 수 있는가? 있다면 몇가지를 가지..

(C++) 코딩테스트 1. 시간복잡도와 디버깅 / 2. 자료구조(1/2)

참고도서 : Do it! 알고리즘 코딩테스트 C++편 . 김종관 . 이지스퍼블리싱 . 2022 참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 시간복잡도 보통의 시간복잡도는 빅오 표기법을 기준으로 수행시간을 계산해야합니다. 보통 여러 시간복잡도 유형중에서 빅오가 가장 최악의경우일때를 나타낸다고 보시면됩니다. 빅오는 점근적 실행 시간(시간복잡도)을 표기할 때 가장 널리 쓰이는 수학적 표기법입니다. (입력값이 무한대로 향할때 함수의 상한을 설명하는 수학적 표기법이다) 빅오의 경우는 시간복잡도를 항상 최고차항만 표기합니다. O(1) : 입력값이 아무리 커도 실행시간이 일정한 경우 O(logn) : 로그는 매우 큰 입력값에도 크게 영향을 받지 않는 편 O(n) : 입력값만큼 시간에 영향을 받..

(C++)알고리즘 탐구 5. 브루트 포스 (1/2) (풀이, 알고리즘 분석)

참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 참고도서에서 언급하는 알고리즘 주제를 참고하여 C++로 풀어보는 것을 목표로 합니다. 알고리즘을 공부하면서도 소프트웨어적 설계를 추가합니다. 답을 내는 코드를 짜는게 아니라 각각이 모듈이 되어 서로 맞물려 동작하는 코드를 짜는 것을 목표로합니다. (그래서 다른 글보다 코드가 깁니다.) 참고로 상위 레벨의 코드를 볼 수록 using namespace std; 라는 코드가 보이지 않아, 없이 진행합니다. 브루트 포스 모든 조합을 일일히 확인해보는 무차별 대입 방식입니다. 문제집: 브루트포스 (연습) (scbsoccer) www.acmicpc.net 다음의 문제집의 문제를 풀어봅니다. 브론즈와 실버 정도의 레벨을 풀면서 브루트 포스 알고리즘의..

C++ 코딩 테스트 기술 모음

C++ 문법 및 편법 1. 소수점 고정하기 cout inp; if(cin.eof()) break; } 체점시에는 자동으로 들어가지만 디버깅때는 ctrl + z 를 입력해야함. Vector 1. Vector 정렬하기 #include algorithm sort(v.begin(), v.end()); 2. Vector에서 원하는 값의 index를 찾기 std::vector v = { 10000, 75, 20, 36, 47, 40, 6, 10 }; std::cout ::iterator it; for (it = words.begin(); it != words.end(); ++it) {

(C++)알고리즘 탐구 4. 애너그램 그룹 (풀이, 남의 코드 분석)

참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 참고도서에서 언급하는 알고리즘 주제를 참고하여 C++로 풀어보는 것을 목표로 합니다. 알고리즘을 공부하면서도 소프트웨어적 설계를 추가합니다. 답을 내는 코드를 짜는게 아니라 각각이 모듈이 되어 서로 맞물려 동작하는 코드를 짜는 것을 목표로합니다. (그래서 다른 글보다 코드가 깁니다.) 참고로 상위 레벨의 코드를 볼 수록 using namespace std; 라는 코드가 보이지 않아, 없이 진행합니다. 애너그램은 단어를 재배열해서 다른 단어로 만드는 것을 말합니다. 우선 책에서 언급하는 문제는 그룹 애너그램이라는 문제입니다. 책의 문제와 완벽히 유사한 문제가 백준에 있습니다. (그러나 책에 있는 문제는 못풀었습니다.) 그 전에 다른 애너그..

(C++)알고리즘 탐구 3. 가장 많은 글자. (풀이, 남의 코드 분석)

참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 참고도서에서 언급하는 알고리즘 주제를 참고하여 C++로 풀어보는 것을 목표로 합니다. 알고리즘을 공부하면서도 소프트웨어적 설계를 추가합니다. 답을 내는 코드를 짜는게 아니라 각각이 모듈이 되어 서로 맞물려 동작하는 코드를 짜는 것을 목표로합니다. (그래서 다른 글보다 코드가 깁니다.) 참고로 상위 레벨의 코드를 볼 수록 using namespace std; 라는 코드가 보이지 않아, 없이 진행합니다. 1371번: 가장 많은 글자 (acmicpc.net) 1371번: 가장 많은 글자 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 ..

(C++)알고리즘 탐구 2. 문자열 뒤집기(풀이, 남의 코드 분석)

참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 참고도서에서 언급하는 알고리즘 주제를 참고하여 C++로 풀어보는 것을 목표로 합니다. 알고리즘을 공부하면서도 소프트웨어적 설계를 추가합니다. 답을 내는 코드를 짜는게 아니라 각각이 모듈이 되어 서로 맞물려 동작하는 코드를 짜는 것을 목표로합니다. 참고로 상위 레벨의 코드를 볼 수록 using namespace std; 라는 코드가 보이지 않아, 없이 진행합니다. 문자열 뒤집기 유사문제로는 아래 문제가 있으며, 이는 마지막에 풀어보도록 하겠습니다. 9093번: 단어 뒤집기 (acmicpc.net) 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. ..

(C++)알고리즘 탐구 1. 유효한 팰린드롬 (풀이, 남의 코드 분석)

참고도서 : 파이썬 알고리즘 인터뷰 . 박상길 . 책만 . 2020 참고도서에서 언급하는 알고리즘 주제를 참고하여 C++로 풀어보는 것을 목표로 합니다. 팰린드롬이란 앞뒤가 똑같은 단어나 문장으로 뒤집어도 같은 말이 되는 단어 또는 문장을 말합니다. 문제 : 주어진 문자열이 팰린드롬인지 확인해라, 대소문자를 구분하지 않는다. 알파벳만 판정하며, 다른 문자열은 판정하지 않는다. 10174번: 팰린드롬 (acmicpc.net). 10174번: 팰린드롬 팰린드롬은 앞으로 읽으나 뒤로 읽으나 똑같은 단어나 숫자들을 말한다. 일반적으로 대소문자를 구분하지 않지만, 공백은 구분한다. 다음은 팰린드롬의 예시이다. Anna Harrah Arora Nat tan 9998999 123 www.acmicpc.net 이 문제..