본문 바로가기

알고리즘119

[백준] 2179 비슷한 단어 c++ https://www.acmicpc.net/problem/2179 주의해야 될 조건1. 최대인 경우가 여러 개일 때에는 입력되는 순서대로 제일 앞쪽에 있는 단어를 답으로 함=> 무조건 갱신2. 우선 S가 입력되는 순서대로 제일 앞쪽에 있는 단어인 경우를 출력하고, 그런 경우도 여러 개 있을 때에는 그 중에서 T가 입력되는 순서대로 제일 앞쪽에 있는 단어인 경우를 출력접두사의 길이가 같은 경우가 여러개일 때를 살펴보면=> abcz, abcd, abce, abc 순서대로 입력  -> 답 : abcz, abcd abcz가 제일 앞에 있으므로 S, abcd가 그 다음 앞에 있으므로 T 이다.sort() 후 : abc, abcd, abcde, abcz 가 된다. 즉, 입력 순서 인덱스도 고려해줘야 한다. 풀이1... 2024. 7. 18.
[프로그래머스] 여행경로 c++ 풀이 string을 방문한것을 어떻게 체크해 줄지 고민하다가 multimap을 써서 복잡하게 풀었다. #include #include #include #include #include using namespace std; vector answer; int city_cnt; multimapcnnt; vectorroute; mapvisit; bool chk; void dfs(int visit_cnt,string airport, vector& route){ if(visit_cnt==city_cnt){ if(chk) return; answer=route; chk=true; return; } if(visit_cnt>city_cnt) return; vector next_airport; //vector로 옮기기 aut.. 2024. 2. 10.
[프로그래머스] 아이템 줍기 c++ 풀이 bfs문제였다. 관건읜 직사격형의 외각만 딴 경로를 그리는 것이였다. 임의의 좌표에 대해서 어떠한 사각형 내부에 (선 제외) 있다면 외각선이 아니므로 체크해주지 않는다. 위의 조건을 통과하는 점들은 외곽선에 있는지 체크하고 좌표를 true로 바꾸어 주었다. 문제는 배열의 좌표만 가지고 판단한다면 3,5와 3,6 둘 다 true여서 이동할 수 있는 것처럼 보인다. (바로 옆에 있기 때문에) 해법은 검색해서 찾았다. 모든 좌표를 2배로 해서 계산하면된다. 그리고 답을 2로 나누어서 제출하면된다. #include #include #include #include using namespace std; vectorvisit(101,vector(101,false)); vectormap(101,vector(101.. 2024. 2. 10.
[프로그래머스] 단어 변환 c++ 풀이 단어하나하나를 노드라고 하고 단어마다 단 한개가 다를때 연결되어 있다고 생각하면 bfs로 풀면된다. target단어가 포함되어 있지않으면 0을 반환한다. #include #include #include #include using namespace std; int words_len; vectorcnnt_node[51]; bool visit[51]; int dist[51]; int ans_idx; vector words; int answer; int begin_size; int countSameChar(string a,string b){ int num=0; for(int k=0;k 2024. 2. 9.