분류 전체보기(227)
-
백준 9370번 : 미확인 도착지 / C++
https://www.acmicpc.net/problem/9370 9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 내가 푼 문제들중에 가장 어려운 문제였다. 문제의 길이와 변수들도 많이 있어서 복잡한 문제였다. 76번줄에 들어왔을때에더 map에도 추가를 했어야했는데 안해줘서 틀렸고 그 이후에는 잘 해결하였다. 핵심은 Info 비교 연산과정에서 g,h를 지나면 true 인 경우에 먼저 map에서 나오게 만들었다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2..
2023.03.21 -
const, static 정리
생성자의 초기화 리스트(initalizer list) 예전 강의에서 만들었던 클래스와 달라진 것은 딱 하나 있는데, 바로 생성자에서 무언가 특이한 것을 도입했다는 것이다. {} 이전에 초기화 리스트가 있으며, 생성자 호출과 동시에 멤벼 션수들을 초기화해주게 됩니다. 만약에 멤버변수와 생성자 인자의 이름이 같아도 정상적으로 초기화해준다. 이것은 바깥쪽은 무조건 멤버변수를 지칭하고 괄호안은 인자로 받은 변수를 지칭하기 때문이다. 그렇다면, 초기화 리스를 사용하는 이유는 ? 초기화 리스를 사용한 버전의 경우 생성과 초기화를 동시에 하게 된다. 반면에 초기화 리스트를 사용하지 않는다면 생성을 먼저 하고 그 다음에 대입을 수행하게 됩니다. 이러한 초기화 리스트는 '생성과 동시에 초기화 되어야 하는 것들' 레퍼런스..
2023.03.21 -
복사 생성자, 소멸자 정리
new와 malloc의 차이점 new와 malloc 모두 동적으로 할당하지만 '무언가' 다르다고 했었는데, 바로 new의 경우 객체를 동적으로 생성하면서와 동시에 자동으로 생성자도 호출핸다는 점이다. 소멸자(Destructor) 만약에 name 을 동적으로 생성해서 문자열을 복사하였는데, 이렇게 동적으로 할당된 char 배열에 대한 delete는 언제 이루어지는 것인가요? 명확하게 delete를 지정하지 않은 한 자동으로 delete 가 되는 경우는 없다. 다시 말해서 동적으로 할당했던 저 name 은 영원히 메모리 공간 속에서 둥둥 떠다닌다는 말이다. 위와 같은 name들이 쌓이고 쌓이게 되면 메모리 누수(Memory Leak)이라는 문제점이 발생하게 된다. 이러한 문제점을 해결하기 위해서 소멸자를 사..
2023.03.20 -
백준 1504번 : 특정한 최단 경로 / C++
https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 다익스트라 알고리즘 응용문제였다. 하지만 코드를 작성하는 과정에서 너무 실수를 많이 해서 계속해서 틀렸는데 좀 더 집중해서 코드를 작성해야겠다. 처음 방문하는 노드에 대해서 0으로 설정하다 보니 진짜로 처음 노드는 0이 되어야 하는데 다른 이상한 값들이 들어가서 오류가 발생했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
2023.03.20 -
함수의 오버로딩, 생성자 정리
함수의 오버로딩 (Overloading) 객체 지향 프로그래밍을 시작하기에 앞서 C++에 C와는 다른 새로운 기능이 있는데 바로 함수 오버로딩이다. C++에서는 같은 이름의 함수를 호출했을 때 사용하는 인자를 보고 구분해 준다. 즉 C++에서는 함수의 이름이 같더라도 인자가 다르면 다른 함수라고 판단하기 때문에 오류가 발생하지 않는다. C++ 컴파일러에서 함수를 오버로딩하는 과정 1. 자신과 타입이 정확히 일치하는 함수를 찾는다. 2. 정확히 일치하는 타입이 없는 경우 아래와 같은 형변환을 통해서 일치하는 함수를 찾아본다. * char, unsigned char, short 는 int로 변환된다. * unsignde short 는 int의 크기에 따라 int 혹은 unsigned int로 변환된다. *f..
2023.03.19 -
백준 1753번 : 최단 경로 / C++
1753번: 최단경로 (acmicpc.net) 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 다익스트라 알고리즘에 대해서 공부하고 다익스트라 알고리즘을 적용하는 문제였다. 다익스트라가 사람이름이라니 첫번째 방법으로는 배열을 이용한 방법이였는데 Next 함수의 시간 복잡도가 O(n) 이여서 정점의 갯수가 많아지면 시간이 너무 오래걸려서 시간초과가 발생하였다. 그래서 처음부터 코드를 다시 작성해서 map 을 이용해서 최솟값을 구하는 시간을 단축해서 문제를 해결하였다. 1 2..
2023.03.18