c++에서 list는 insert되거나 delete 되는 위치를 알 수 있을 때, insert나 delete를 빠르게 하기 위해서 씁니다. erase를 했으니, c++ list의 insert함수를 알아보고 어떻게 사용하는지 간단하게만 알아봅시다. 먼저 예제입니다. int를 저장하는 리스트 my_list가 있네요. foo 함수는 리스트 내부에 있는 친구들을 향상된 for문으로 head부터 tail까지 순회합니다. 다음에 insert할 위치와 insert할 item을 받아서, 특정 위치에 아이템을 넣습니다. 연산이 일어날 위치를 알고 있다면, 넣는 것이나 제거하는 것이나 시간이 오래 걸리지는 않습니다. 물론 다른 용법도 문서에 언급되고 있기는 하지만, 저 같은 경우 백준에서 문제를 풀 때 1번째, 단일 원소..
레퍼런스/예제 검색 결과
안녕하세요. 이번 시간에는 c++ list의 erase 함수 사용법을 간단하게 알아봅시다. 이 함수는 범위 제거를 하거나, 원소 하나만 제거를 할 때 쓰이는데요. 보통 저는 전자보다는 후자의 용도로 많이 쓰곤 합니다. 사실 후자의 용도만 알아도 큰 문제 없기도 하고요. 예제를 보겠습니다. 먼저, 1, 2, 3, 4, 5를 순서대로 넣은 list가 하나 생성됩니다. 9번째 줄에, 리스트의 시작을 가리키는 이터레이터 iter를 리턴합니다. 그러면 iter는 1을 가리키게 됩니다. iter++을 하게 되면, 다음 원소를 가리키게 되는데요. 1 다음에 있는 원소는 2였으므로, 2를 가리키게 됩니다. 이 상태에서 (*iter)를 출력하면 2가 됩니다. 그 다음이 문제인데요. iter = my_list.erase(..
제가 3회 코딩테스트 문제에 출제했던 가희와 무궁화호는 처음에 실수 민감형이였습니다. 어떤 버전이였는지는 old version의 코드를 보시면 대략 감이 오실 듯 싶어요. 부동 소수점은 0.1, 0.2 등을 정확하게 저장하지 못합니다. 정확하게 저장하려면 고정 소수점 등을 이용해야 합니다. 파이썬에서는 Decimal을 쓰면 그러한 일을 할 수 있습니다. 당연하게도 현재 버전의 풀이가 아닙니다. 이 글에서는 단지, 엄청나게 작은 오차도 허용하지 말아야 하는 경우에 파이썬에서는 어떻게 해야 하는지에 대해서만 언급하겠습니다. 24336번의 원래 버전은 눈치 채셨겠지만, 표정 속도를 소수점 첫째 자리에서 버림한 값을 출력하라 했습니다. 이게 실수 민감형인가요? 라고 물어보실 수도 있습니다만, 매우 쉽게 실수 오..
제가 낸 3회 코딩테스트 문제 중에 가희와 쓰레기 놀이가 있었습니다. 이 문제의 input에 대한 output 파일을 생성하기 위해 작성한 파일이 이 코드였는데요. 생각보다 오래 걸렸답니다. 대략 13 ~ 14초 정도 걸렸던 걸로 기억해요. 이 로직을 그대로 validator에도 썼기 때문에, 벨리 데이터가 시간 초과가 나기도 했습니다. 제가 작성했던 처음 버전의 솔루션 코드를 유심히 보실 필요는 있습니다. 왜냐하면, 생각보다 비효율적인 일을 하고 있기 때문입니다. 이 부분을 먼저 보겠습니다. new_ref의 내용을 그대로 ref에, new_con의 내용을 그대로 con에 넣어버리는 부분입니다. bfs 함수가 끝나기 직전에 호출하는데요. 이 두 친구는 bfs 내의 지역 변수로 선언되어 있어요. 이 부분입..
요새 출제 하느라 정신이 하나도 없네요. 몇 일 동안 글을 쓰지 못했네요. 이번에는 itertools의 accumulate에 대해 간단하게 알아보도록 하겠습니다. 설명을 보면, series of accumulated sums 이라고 되어 있긴 합니다. 여기서 accumulate는 축적하다라는 뜻인데요. 뒤에 d가 붙었으니 축적된이겠죠? sums가 뒤에 붙었는데요. 축적된 합. 네. 누적합을 구하게 됩니다. 그런데 뒤에 괄호를 보면, or other binary 함수 results라고 되어 있어요. 무엇인지는 모르겠지만 대충 직역하면 다른 conversion의 결과를 누적한다. 이 정도로 해석하면 좋겠네요. 축적된 합은 몰라도, 누적합, 누적 곱 정도는 많이 들어보셨으리라 생각해요. 예제 몇 개를 봅시다...
최근댓글