Algorithm(77)
-
Generate Document - Easy
Generate Document - Easy 이 문제의 경우에는 문자열의 문자를 map에 키값으로 1개씩 count해준다. 개수가 다를 경우에는 return false를 해주며 종료해주면 된다. 위의 예시를 보면 특정 문자를 한개씩 카운트 해주며 확인해보면 각 문자의 등장횟수가 같다. 그래서 output은 true가 나오게 된다. 더보기 #include using namespace std; bool generateDocument(string characters, string document) { map characterMap, documentMap; for(int i = 0; i < characters.size(); i++) characterMap[characters[i]]+=1; for(int i = ..
2021.03.27 -
Run Length Encoding(문자 개수 만큼 압축)
Run Length Encoding 이 문제는 문자열을 하나씩 세리다가 9개나 다른 문자가 나오면 저장을 할 수 있도록 압축을 하는 문제이다. 필자의 경우에는 한개씩 세리다가 이전 문자를 저장하며 9개가 되거나 문자가 달라지면 result 배열에 저장하는 방식으로 문제를 해결했습니다. 더보기 #include using namespace std; string runLengthEncoding(string str) { vector result; char currentChar = str[0]; int count = 1; for(int i = 1; i < str.size(); i++){ if(currentChar != str[i] || count == 9){ result.push_back(count+'0'); r..
2021.03.27 -
카이사르의 암호[Caesar Cipher] - easy
카이사르의 암호[Caesar Cipher] 카이사르 로마제국의 악당? 황제같은 이미지가 있다. 이 사람이 만들었다는 암호이다. 카이사르 암호란 특정 키 값을 각 문자에 더한 값만큼의 문자로 만드는 것이다. 즉 아래의 사진만큼 키 값을 더한 만큼의 문자를 만들어주면 되는 것이다. 여기서 따로 예외 처리를 해주어야 하는 것은 바로 'z' 이상으로 키 값이 넘어갔을 때나 키 값이 알파벳 개수보다 커질 때이다. 더해준 값이 넘어갔을 때다. 1. 알파뱃 개수보다 키 값이 커질 때 key %= 26; key 값에 나머지를 저장함으로써 키 값이 27이면 결국 1만큼 이동해준 것과 같기 때문에 26으로 나머지를 구해준다. 2. 키 값을 더했을 때 z보다 커질 때 newletterCode
2021.03.27 -
팰린드롬인지 체크하기 - easy
팰린드롬이란? 앞뒤가 똑같은 전화번호, 앞뒤가 똑같은 문자열 같은 것이다. 이 문자열이 팰린드롬인지 체크하는 문자열인데 크게 어렵지 않은 알고리즘이니 쉽게 풀어보도록 하자 Reverse 라이브러리 사용하기 더보기 #include using namespace std; bool isPalindrome(string str) { string compareString = str; reverse(compareString.begin(), compareString.end()); return str == compareString; } 우선 가장 쉬운 방법은 reverse라는 알고리즘 라이브러리에서 제공해주는 것을 사용하는 것이다. 그리고 원본의 문자열과 ==을 통해서 비교하여 true, false를 반환할 수 있다. 앞..
2021.03.27 -
백준 2146 다리 만들기
www.acmicpc.net/problem/2146 2146번: 다리 만들기 여러 섬으로 이루어진 나라가 있다. 이 나라의 대통령은 섬을 잇는 다리를 만들겠다는 공약으로 인기몰이를 해 당선될 수 있었다. 하지만 막상 대통령에 취임하자, 다리를 놓는다는 것이 아깝다 www.acmicpc.net 백준 2146 다리 만들기 다리 만들기 문제는 그래프 문제이며 최소 거리를 구하기 때문에 BFS를 사용하면 된다. 나는 이문제를 해결하는데 조금 비효율 적으로 해결해서 시간이 생각보다 많이 나왔다. 다른 풀이를 참고하셨으면 좋겠다. 다른 풀이도 풀고 싶지만 지금 내가 너무 피곤해서 내일 일어나서 적어야 겠다. 우선 단계적으로 1단계 각 섬을 분리하기 여기서는 BFS난 DFS 둘 중 아무거나 사용해도 된다. 2단계 각..
2021.02.02 -
백준 2002 추월
www.acmicpc.net/problem/2002 2002번: 추월 입력은 총 2N+1개의 줄로 이루어져 있다. 첫 줄에는 차의 대수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 대근이가 적은 차량 번호 목록이 주어지고, N+2째 줄부터 N개의 줄에는 영식이 www.acmicpc.net 백준 2002 추월 해당 문제는 map을 활용한 문제이다. map을 활용해 해당 표지판의 위치를 저장한 후 위치를 거스릴 때까지 체크 후 알맞은 포인트를 찾으면 방문했던 점을 제외하고 다음 위치를 찾아줍니다. 찾으려는 번호판의 숫자와 동일하다면 다음에 방문할 수 있는 점으로 이동해준다. 만약 현재 방문하려는 숫자와 틀린 경우 wrongNumber를 추가해주고 visit에 방문했음을 추가하여 맞았..
2021.02.02