반응형

전체 글 287

[프로그래머스 132266] 부대복귀 C++

문제 프로그래머스 132266 부대복귀 C++ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 아주 일반적인 BFS문제. destination(start)부터 BFS를 돌면서, 각각 노드 첫번째 방문시에 얼마나 걸렸는지(cnt)를 배열(dist)에 넣어준다. 방문 전에 배열은 -1로 초기화하고, 처음 방문시에 걸린 횟수(cnt)를 넣어준다. BFS 특성상 가장 첫 방문이 최단 거리이므로 dist값이 -1이 아니라면 이미 방문한 노드이니 갱신해주지 않는다. BFS를 끝내면 sources에 들어있는 노드까지 얼마나 걸리는지를 answer에 넣어준다. 소스..

[C++] iterator로 set, vector 원소 삭제하기 (cannot increment value-intialized map/set)

개요 iterator로 set, vector 원소 삭제(earse)하는 방법에 대해 서술한다. for (set::iterator iter = s.begin(); iter != s.end(); iter++) { if (*iter % 2 == 0) { s.erase(iter); iter--; } } 삭제가 잘 될줄 알았지만... 삭제가 잘 되지 않는다. 사유를 보니 erase(iter)를 하게 되면 iter가 무효화되기 때문에 연산이 먹지 않는다고 한다. vector의 iterator여서 iter++을 하면 다음 요소로 넘어가지 않을까? 굳이 무효화해야하나?라고 생각했지만 iterator는 vector 말고도 list 등에서도 작동하므로 iter를 무효화해준다고 한다. https://stackoverflow..

언어/C++ 2022.11.19

[프로그래머스 132265] 롤케이크 자르기 C++

문제 프로그래머스 132265 롤케이크 자르기 C++ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 토핑 최대 개수가 백만개이기 때문에, 시간복잡도에 유의해야 한다. 루프를 여러번 돌면 시간초과가 나므로, 처음 top2 확인에 1번, 토핑 전체 검사 후 answer 증가에 1번 루프를 돈다. 먼저 토핑 전체를 검사해서, 서로 다른 토핑의 개수를 top2에 저장한다. 그 후에 토핑을 하나하나 확인해서, top1에 없는 토핑이라면 top1을 늘려준다. top2에 토핑이 없어지면 top2를 1감소시킨다. top1와 top2가 같다면 answer를 1증가시..

[백준 2240] 자두나무 C++

문제 백준 2240 자두나무 C++ 2240번: 자두나무 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어 www.acmicpc.net 풀이 전형적인 dp문제이다. 1번에서 시작한다는 문구를 놓쳐서 디버깅하는데 시간이 쪼오끔 걸렸다... (2번에서도 시작할 수 있는줄 알았음) 움직이지 않는 경우에는 첫번째에 있는 경우이므로, 그 전칸에서 바로 가져오고 1번째 칸은 1번째에서 그대로 내려오거나 / 2번째 칸에서 바꾸거나 2번째 칸은 2번째에서 그대로 내려오거나 / 1번째 칸에서 바꾸거나 각각 2가지 경우가 있으므로 이를 비교하여 더 큰 값을 취하고 dp배열에 저장해두면 ..

알고리즘/백준 2022.11.06

no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string<char, char_traits<char>, allocator<char> >')

개요 string 할당하다가 생긴 오류 no viable conversion from 'value_type' (aka 'char') to 'string' (aka 'basic_string') "char"에서 "std::basic_string"(으)로 변환하기 위한 적절한 생성자가 없습니다. 설명 1 2 3 4 5 6 7 8 9 10 11 12 #include #include using namespace std; int main() { string s = "Hello, World"; string myStr = s[0]; return 0; } cs mystr에 H가 들어가야 할 거 같지만 string 클래스에 myStr = s[0]과 같은 생성자가 없기에 위와 같은 에러가 발생한다. 따라서 다음과 같이 생성..

언어/C++ 2022.11.05

[프로그래머스 131127] 할인 행사 C++

문제 프로그래머스 할인 행사 C++ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 조건을 만족하려면 want에 있는 물품이 number에 있는 수 만큼 할인 받아야 한다. map을 활용해 cntMap 선언한 뒤 할인을 받을 때마다 cntMap의 값을 1감소 시키고, 할인 받지 못할 때는 cntMap의 값을 1증가 시키면 된다. 11일차 부터는 해당 날짜의 물품의 cntMap 값을 1감소시키고 (할인 받았으므로), 해당 날짜로 부터 10일 전 물품의 cntMap 값은 1 증가시키면(할인을 이제 못 받으므로) 된다. 오랜만에 map 자료 구조를 이용하는..

[백준 10026] 적록색약 C++

문제 백준 10026 적록색약 C++ 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 풀이 주어진 조건에 따라 DFS나 BFS를 활용하여 그래프를 탐색해주면 된다. 색약인 경우와 색약이 아닌 경우를 color로 구분하여, 색약이 아닌 경우에는 색깔이 같을 때만 queue에 push해주고 색약인 경우에는 빨강과 초록의 구분이 없게 하여 queue에 push 한다. 소스 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28..

알고리즘/백준 2022.10.06

2022 KHUTHON 참가

2022년 학교에서 하는 소프트웨어 해커톤 KHUTHON에 참가했다. https://thon.khlug.org/about/2022 khuthon 경희대학교 소프트웨어 해커톤 thon.khlug.org 2017년 첫 쿠톤에 참가했었고, 드디어 2번째 쿠톤에 참가할 수 있었다. 작년 재작년에는 코로나 때문에 비대면으로 진행됐어서 참가가 힘들었다. 이번 주제는 대학생의 메타버스...! 였지만 어짜피 게임만들기로 했으니 주제는 끼워맞추는걸로 팀이름은 ㅋx10... 팀장님 네이밍 센스가 구린거 같은데 어그로 끌기에는 최적인듯 팀은 4명이서(플머 2, 아트 2) 구성했고, 우리 금손 갓갓 아트님들의 작업물이 정말 든든했다. 아무래도 아트가 있어서 그런가 팀 썸네일 자체도 빛나는 느낌 ㅋㅋㅋㅋ 우수상도 수상했었는데...

일상 2022.10.04
반응형