본문 바로가기

Coding

(195)
배열 vs 벡터, 누가 더 좋을까? c++로 문제를 풀면서 배열 대신 벡터를 최대한 사용하려고 했다. 둘의 차이점은 무엇일까? 둘의 큰 차이점이라고 하면 정적인 것과 동적인 것이라고 할 수 있다. 배열은 사용하기 전에 공간을 먼저 정의하고 사용하기 때문에 불필요한 공간을 메모리 위에 올려야한다. 하지만 벡터같은 경우 필요한 만큼의 공간을 정의하기 때문에 메모리를 절약할 수 있다. 1. 벡터의 경우 서로 다른 타입을 갖도록 선언할 수 있다. (ex, vector vec;) 2. 벡터는 배열보다 메모리 공간을 더 차지 한다. 3. 벡터(Template 클래스), 배열(메모리 공간) 4. 배열은 인덱스 기반이지만 벡터는 인덱스 기반이 아니다. 5. 벡터는 추가적으로 요소들을 삽입하거나 삭제할 수 있지만 배열은 불가능하다. 6. 배열은 선형 구조..
1026번 보물 A의 최댓값과 B의 최솟값 또는 반대로 A의 최솟값과 B의 최댓값을 곱하면 된다. sort함수를 사용하여 A와 B를 정렬시키고 곱하면 된다. 문제에서는 B를 재배열하지않고 풀어야해서 B의 최댓값의 인덱스를 구해서 큰 순서대로 큐에 저장하고 A를 정렬시킨 뒤 둘을 곱하였지만 틀렸다고 나와서 기존 코드를 첨부한다(해결). 1. Sort 이용 2. 큰 값 index 구해서 해결
2644번 촌수계산 간단한 BFS 문제.
'\n' vs endl '\n' -> 새줄(개행) endl -> 새줄(개행)뿐만 아니라 출력 함수의 끝을 알림으로써 버퍼를 정리하는 기능, 즉 출력 버퍼까지 비워주는 역할(flush)도 한다. 그렇기 때문에 둘은 속도 차이가 나게 되는데 그러면 endl은 언제 사용할까? 아무리 찾아봐도 안나온다. 망할.. 예상으로는 출력버퍼가 많을때 사용할 것 같은데 정확히 모르겠다. 실무에서 어떻게 쓰이는지 궁금하다.
3047번 ABC 간단한 정렬 문제.
11651번 좌표 정렬하기2 머지소트나 퀵소트를 쓸까말까 고민하다가 이번에는 간단히 sort함수 사용해서 풀었다. ps. '\n' 대신 endl 쓰면 시간초과가 난다.
1613번 역사 플로이드 와샬 문제. 답은 맞았지만 생각보다 코드가 더럽다.
1238번 파티 플로이드 와샬 기본 문제. 분명 맞는데 계속 틀렸다고 해서 한시간동안 계속 찾아보다가 발견 (마지막에 최댓값을 구할 때 X값을 -1 하고 넣어주어야한다). ps. 11404번은 계산하고 INF가 남아있다면 0으로 바꿔줬지만 이 문제는 안바꿔줘도 답이 나왔다. 예상으로는 제한값이 그리 크지 않아서 INF값이 나오지 않아 바꿀 필요가 없는것 같다. 그 예상 이유는 11404번에서 이 과정이 빠지면 99%까지 맞고 100%에서 탈락하기 때문.