Algorithms/Implementation
-
[구현 알고리즘] 문자열 압축 ★★☆Algorithms/Implementation 2021. 2. 22. 19:42
문제 : 문자열이 주어질 때 최대한 압축한 문자열의 길이를 출력하라 입력 조건 문자열의 길이는 1 이상 1,000 이하이다 s는 알파벳 소문자로만 이루어져 있다 입력 예시 1 aabbaccc 출력 예시 1 7 코드를 작성하기 전에 먼저 아이디어를 정리해 보았다 int solution(string s) { if(입력 문자열 크기가 1인 경우) return 2 for(i개씩 자를 경우, i는 2부터 문자열 크기의 절반까지){ while(true){ if(기준값이 현재값과 같은 경우){ 기준값 중복 개수 증가 if(현재값 업데이트가 안되는 경우){ min += (기준값크기 + 기준값 중복 개수) min += 나머지 값 break } else if(현재값 업데이트가 되는 경우) 현재값 업데이트 } else if..
-
[구현 알고리즘] 럭키 스트레이트 ★☆☆Algorithms/Implementation 2021. 2. 22. 15:26
문제 : 점수 N이 특정 조건을 달성하면 럭스 기술을 사용할 수 있다 N이 주어질 때 기술 사용이 가능한지 출력한다 입력 조건 첫째 줄에 점수 N이 정수로 주어진다 (10 str; for (int i = 0;i < str.size() / 2;i++) sum1 += (int(str[i]) - 48); for (int i = str.size() / 2;i < str.size();i++) sum2 += (int(str[i] - 48)); if (sum1 == sum2)cout
-
[구현 알고리즘] 개임 개발 ★★☆Algorithms/Implementation 2021. 2. 10. 20:34
문제 설명 : 게임 캐릭터의 움직임을 테스트하려고 한다. 매뉴얼을 반복적으로 수행하면서 방문한 칸의 수를 출력하라 현재 위치에서 왼쪽 방향으로 탐색한다 왼쪽에 탐색하지 않은 칸이 존재하면 왼쪽으로 회전하고 앞으로 한 칸 전진한다 현재 위치로부터 네 방향 모두 가본 칸이거나 바다로 되어있는 칸이라면 현재 방향을 유지한 채로 뒤로 한 칸 돌아간다. 만약 뒤쪽 방향이 바다라면 움직임을 멈춘다 입력 조건 조건 1 : 첫째 줄에 맵의 세로 크기 N과 가로 크기 M을 공백으로 구분하여 입력한다 (3 n >> m >> a >> b >> d; for (int i = 0;i > board[i][j]; if (board[i][j] == 1) c..
-
[구현 알고리즘] 왕실의 나이트 ★☆☆Algorithms/Implementation 2021. 2. 10. 17:53
문제 설명 : 8*8 크기의 체스판에서 나이트의 위치가 주어질 때 나이트가 이동할 수 있는 경우의 수를 구하시오 입력 조건 조건 1 : 첫째 줄에 나이트의 위치가 영문과 숫자의 조합으로 이루어진 좌표가 입력된다 출력 조건 조건 1 : 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오 입력 예시 a1 출력 예시 2 입력값을 좌표로 변경한 뒤 모든 경우의 수를 조사하여 그 갯수를 출력하면 된다 개체가 이동할 수 있는 방법을 dx[], dy[]로 표현하는 것은 DFS, BFS에서 자주 사용되는 기법이어서 익숙했다 #include #define X first #define Y second using namespace std; string pos; int dx[] = {2,2,1,1,-1,-1,-2,-2..
-
[구현 알고리즘] 문제풀이 전략Algorithms/Implementation 2021. 2. 10. 17:30
코딩 테스트에서 구현이란 머리 속에 있는 알고리즘을 소스코드로 바꾸는 과정이다 우리는 문제를 해결할 때 세 단계를 거쳐서 문제를 해결한다 문제를 이해하고, 문제의 해결 방법에 대해 생각한 뒤, 이를 소스코드로 구현해 내야 한다 따라서 모든 문제 해결에는 구현이 포함되어 있다고 할 수 있다 하지만 우리가 문제풀이 방식으로서 살펴볼 구현은 이와 좀 다르다 흔히 문제 해결 분야에서 구현 문제는 "풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제" 를 의미한다 그렇다면 구현 문제를 풀 때 요구되는 능력은 무엇일까 프로그래밍 언어의 문법을 정확히 숙지하지 못하였거나 라이브러리 사용 경험이 부족한 경우에 불리하다고 볼 수 있다 따라서 언어의 문법을 잘 이해하고 경험이 있어야만 구현 문제를 해결할 수 있다 ..