문자열 19

[L3] 프로그래머스 여행경로 C++ DFS, 해시맵, 우선순위 큐

리뷰 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 해시맵을 통해 각 공항을 저장해 주고, ICN으로 부터 출발해 모든 항공권을 사용하여 모든 도시를 방문하는 문제예제의 경우 모두 맞았지만 테스트 케이스에서 반만 맞는 경우가 생겼다.answer에 공항 이름을 추가하는 로직을 후위로 위치하니 AC를 맞게 되었다.  전역 변수dic : 각 공항에서 이동할 수 있는 공항 정보를 오름차순으로 정렬하는 해시맵answer : 공항에 방문한 순서를 저장할 문자열 벡터 함수1. dfsvoid dfs(string s) 깊이 우선 탐색을 통해 공항을 방문하며 정답에 기록할 함수매개변수 s를 공항의 이름으로 받는다. 초기..

[G5] 백준 1593번 문자 해독 C++ 슬라이딩 윈도우, 구현, 문자열

리뷰 https://www.acmicpc.net/problem/1593그리디한 접근 시 시간 초과가 났다. for문 한줄로 완탐을 끝낼 수 있는 방법을 많이 연구 해야할 것 같다. 전역 변수n, m, ans : 문자열 a의 길이 n, 문자열 b의 길이 m, 정답 저장용 변수 ansa, b : 입력으로 주어지는 첫번째 문자열 a, 두번째 문자열 bav : a문자열이 보유하고 있는 문자의 개수 정보 배열, 52크기로 세팅한다.bv : b문자열의 보유하고 있는 문자의 개수 정보 배열, 마찬가지로 52크기로 세팅 함수1. chkint chk() 현재 부분문자열이 일치하는지 여부를 체크하기 위한 함수av와 bv의 모든 인덱스에 저장된 값이 동일한지 체크해 주어야 한다.만약 다른 값을 만났다면 0을 리턴해 주면되고..

[L2] 프로그래머스 C++ 가장 큰 수 정렬, 문자열

리뷰https://www.acmicpc.net/problem/16496백준에 존재하는 플레티넘 문제와 유사한 난이도인데 프로그래머스에선 L2난이도에 있다.  전역 변수없음  함수1. cmpbool cmp(string a, string b) 정렬을 할때 사용할 문자열을 비교하여 순서를 바꿀지 여부를 체크하는 함수numbers의 원소는 0 이상 1,000 이하이므로 매개변수로 주어진 문자열의 길이가 4가 넘을때까지 더해준다.만약 이미 4자릿수로 들어온 상태(1000)이라면 while문이 실행되지 않는다.두 문자열을 비교하여 a가 더 크다면 순서를 바꾸고, b가 더 크거나 같다면 바꾸지않는다. 문제풀이정수 벡터 numbers을 solution함수의 매개변수로 입력 받는다.문자열 벡터 answer을 초기화 해주..

[G4] 백준 1062번 가르침 C++ 백트래킹

리뷰 에잉.. 코드 한줄 차이로 너무 헤맨 문제였다.https://www.acmicpc.net/problem/1062 전역 변수n, k, ans : 단어의 개수 n, 배울 수 있는 글자의 수 k, 정답을 저장할 변수 ansv : 방문 처리용 배열path : 중복 제거용 벡터lst : 입력된 단어를 저장할 문자열 배열, 입력 문자의 최대 크기인 50으로 초기화 한다. 함수1. btvoid bt(int level) 백트래킹을 통해 배울 수 있는 단어 개수의 최대값을 구하는 함수매개변수로 level을 받아 각 재귀 단계 즉 배운 글자의 개수를 명시해 준다.기저조건은 level이 k - 5가 되었을때이다. cnt를 0으로 초기화 하고 n개의 문자열을 순회한다.flag를 1로 설정하고 각 문자열이 방문처리 되어있..

[G3] 백준 1701번 Cubeditor C++ KMP, 문자열, 브루트포스 알고리즘

리뷰 브루트포스 알고리즘을 통해 문자열의 길이를 줄이며 각 문자열의 LPS를 구하는 문제https://www.acmicpc.net/problem/1701 전역 변수str : 탐색을 진행할 문자열 변수n, ans : 초기 문자열의 길이 n, 가장 긴 길이를 저장할 변수 ans 함수1. getLPSvoid getLPS(string str) 문자열의 LPS를 구하는 함수매개 변수는 초기 문자열에서 왼쪽의 문자열이 한개씩 날아간 문자열들이 주어진다.해당 문자열에서의 LPS를 구하고 LPS중 가장 큰 값이 ans에 저장되게 된다. 문제풀이초기 문자열 str을 입력 받고 n에 str의 길이를 저장한다.n번의 for문을 개행하고 str의 왼쪽에서부터 한글자씩 제거하며 getLPS함수의 매개변수로 전달해 준다.n번의 ..

[P5] 백준 1786번 찾기 C++ KMP, 문자열, LPS

리뷰 KMP의 기초가 되는 문제, O(M+N)의 시간 복잡도로 해당 문제를 푸는게 놀라울 따름이다.https://www.acmicpc.net/problem/1786 전역 변수str1, str2 : 원본 문자열 str1, 원본 문자열에서 패턴을 찾을 문자열 str2n, m, cnt : str1의 길이 n, str2의 길이 m, str1에서 str2를 찾은 개수 cntlps, ans : 부분 문자열의 lps를 구할 정수형 벡터 lps, 찾은 인덱스를 저장할 정수형 벡터 ans 함수1. getLPSvoid getLPS(const string& str2) 패턴 문자열 str2에서 LPS를 구하기 위한 함수lps벡터를 m크기로 초기화 해준다. lps[0]은 0으로 초기화 해야하므로 일단 모두 0으로 초기화 해주었..

[G3] 백준 16934번 게임 닉네임 C++ 트라이, 문자열, 해시맵

리뷰 트라이를 사용해 유저가 가입한 순서대로 닉네임이 주어졌을 때, 각 유저의 별칭을 구하는 문제https://www.acmicpc.net/problem/16934 전역 변수Trie : 트라이를 구현할 구조체 동일한 닉네임이 들어올 수 있으므로 cnt라는 변수를 업데이트 해줘야 한다.root : 트라이의 루트를 나타낼 Trie타입 구조체n : 입력 받을 게임 닉네임의 개수 함수1. insertvoid insert(Trie* node, const string& str) 트라이에 게임 닉네임을 입력하고, 별칭을 출력해 주는 함수함수 호출 시 flag를 통해 별칭을 출력했는지 여부를 체크해 준다. 기본값은 1이다.입력 받은 문자열을 순회하며 다음 노드가 있는지 체크해 준다.만약 다음 노드가 존재하지 않을 시 ..

[G3] 백준 7432번 디스크 트리 C++ 트라이, 문자열, DFS

리뷰 개미굴과 유사한 부분이 많은 문제인듯 하다. 하지만 개미굴과 달리 공백이 아닌 역슬래시로 문자열을 구분https://www.acmicpc.net/problem/7432 전역 변수n : 디렉토리 전체 경로의 개수Trie : 맵을 사용하여 디렉토리 정보를 트라이로 사용할 구조체 함수1. insertvoid insert(Trie* node, const vector& strs) 트라이에 디렉토리 문자열을 추가할 함수입력할 디렉토리 이름을 벡터형식으로 입력 받는다.루트노드에서 부터 시작하여 각 문자열을 하위 요소에 넣어준다.만약 처음으로 정의된 디렉토리인 경우 새롭게 할당해주고 이동하는 작업을 해준다. 2. dfsvoid dfs(Trie* node, int level) 깊이 우선 탐색을 통해 디렉토리 정보를..

[G4] 백준 5052번 전화번호 목록 C++ 트라이, 문자열

리뷰 접두사가 동일한 전화번호가 있는지 찾고, 있으면 YES를 없으면 NO를 출력하는 문제https://www.acmicpc.net/problem/5052 전역 변수tc, n : 테스트케이스의 개수 tc, 각 테케마다 입력되는 전화번호의 개수 nlst : 각 테케마다 입력된 문자열을 저장할 문자열 타입 배열, 최대 1만으로 크기를 설정한다.Trie : 트라이를 구현할 구조체, 숫자열 문자를 받아오므로 child의 크기는 10으로 설정한다. 함수1. insertbool insert(Trie* node, const string& str) 트라이에 새로운 전화번호를 넣는 함수전화번호를 넣는 도중 접두어가 있는지 체크까지 해주어야 한다.만약 접두어가 있다면 탐색을 그만하고 NO를 출력해 주어도 된다. 문제풀이t..

[P3] 백준 19585번 전설 C++ 트라이, 해시맵, 문자열

리뷰 트라이와 해시맵을 사용하여 푸는 문제, 2트라이, 1트라이 1해시맵, 2해시맵 모두 풀리는 것 같다.https://www.acmicpc.net/problem/19585 전역 변수c, n, q : 색상 정보의 개수 c, 팀 정보의 개수 n, 쿼리의 개수 qteams : 팀 정보를 저장할 해시맵 key : 문자열, value : 정수형으로 초기화 한다.Trie : 트라이를 통해 색상 정보를 저장할 구조체 소문자에 대한 정보를 트리형태로 저장한다. 함수1. insertvoid insert(Trie* node, const string& str) 트라이를 통해 트리 구조에 문자를 삽입하는 함수매개변수로 Trie 타입의 현재 노드의 포인터와 입력할 문자열인 str를 받아준다.문자열을 탐색하면서 관련 노드가 존..

728x90