분류 전체보기(145)
-
[BOJ] #18879번: 좌표 압축
문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 5 2 4 -10 4 -9 예제 출력 1 2 3 0 3 1 풀이 pypy로 제출했다. 좌표 압축에 있어 하나하나 비교해..
2022.06.18 -
[C++] 구조체(structure type) 개념 및 활용
이번 포스팅에선 구조체에 대해 알아보도록 하겠습니다. 구조체 : 사용자 정의 타입 다양한 타입의 변수 집합을 하나의 타입으로 나타내는 것이 구조체입니다. 예를 들어, 책 제목/ 저자/ 가격의 집합을 하나의 book 타입으로 정의하는 것이 구조체입니다. 개발 환경 : VSCode, Windows 10 기본 개발 세팅은 다음과 같습니다. #include #include #include using namespace std; int main() { return 0; } 📌 구조체 선언하기 구조체는 main 함수 밖에서 선언합니다. 이번 포스팅에선 Book이란 이름으로 선언하도록 하겠습니다. struct 구조체이름 {}; Book 구조체 선언 struct Book { char title[30]; char auth..
2022.06.17 -
[C++] string 클래스와 메소드
이번 포스팅에선 string 클래스와 메서드에 대해 알아보도록 하겠습니다. C++에선 문자열을 더 손쉽게 처리할 수 있도록 string 클래스와 메서드를 도입했습니다. 이 덕분에 문자열을 하나의 타입으로 처리할 수 있게 되었습니다. 개발 환경 : VSCode, Windows 10 기본 개발 세팅은 다음과 같습니다. #include #include #include using namespace std; int main() { return 0; } 📌 C 언어 스타일의 문자열 처리 C 언어는 기본적으로 문자열을 배열처럼 처리합니다. char 배열이름[길이]; 예시1 문자열을 선언하고, 나중에 cin으로 입력받아서 문자열을 초기화하는 예제입니다. int main() { const int SIZE = 20; //..
2022.06.16 -
[C++] 메모리 동적 할당이 뭐에요?
이번 포스팅에선 메모리 동적 할당에 대해 알아보도록 하겠습니다. 메모리 동적 할당 : 힙 영역에 할당될 메모리를 사용자가 직접 할당했다가 끊었다가 하는 활동 개발 환경 : VSCode, Windows 10 [본 포스팅은 메모리 구조에 대한 사전 지식이 필요합니다!] https://mengu.tistory.com/74 [CS지식] 메모리 구조에 대하여 메모리의 구조 프로그램이 실행되기 위해선 메모리에 로드되어야 합니다. 또한 프로그램의 변수들이 메모리에 저장되어야 합니다. 이에 운영체제들은 여러 메모리 영역들을 제공하고 있습니다 mengu.tistory.com 기본 개발 세팅은 다음과 같습니다. #include #include using namespace std; int main() { // pointer..
2022.06.15 -
[Algorithm] 분할 정복(Divide&Conquer) ft. 합병 정렬, 퀵 정렬
이번 포스팅에서 다룰 알고리즘은 '분할 정복'이다. Divide and Conquer 이 알고리즘은 문자 그대로, 분해해서 해결하는 것을 메인 흐름으로 가져간다. 밑의 그림을 보면 이해될 것이다. * 실습 환경은 windows 10/ vscode에서 이뤄졌습니다. 📍 정의 한 번에 해결하기 어려운 문제(시간문제, 공간문제 등)를 잘게 쪼개고 각개 격파한 후, 하나의 답을 도출하는 알고리즘. 분할 정복 알고리즘은 다음 세 개의 프로세스를 가진다. 📍 Process (1) Divide : 문제를 정의하고, 잘게 쪼개는 과정이다. 이 단계에서 문제를 잘 쪼개야 손쉽게 문제를 해결할 수 있다. (2) Conquer : 잘게 쪼개진 문제를 해결할 시간이다. 분할 알고리즘의 문제는 쪼개도 사실상 같은 문제들이다. ..
2022.06.14 -
[C++] Pointer 개념, 연산에 대해 알기
이번 포스팅에선 C++의 포인터에 대해 알아보도록 하겠습니다. 포인터 : 다른 변수, 혹은 그 변수의 메모리 공간 주소를 가리키는 변수 즉, 특정 변수가 저장되어 있는 메모리 주소 개발 환경 : VSCode, Windows 10 기본 개발 세팅은 다음과 같습니다. #include #include using namespace std; int main() { // pointer int num1 = 10; int num2 = 4; cout
2022.06.13