본문 바로가기

Algorithm

(640)
백준 2048 (Easy) 재풀이 다시 풀어도 과정은 유사하게 푼 것 같다. 다만 복원 배열을 전역으로 쓴것은 함정. 복원 값이 다음 차의 DFS에서 날라가므로 안된다. #include #include using namespace std; int arr[20][20]; bool visit[20][20]; int N; int maxa; void moveUp() { memset(visit, 0, sizeof(visit)); for (int j = 0; j = 0) { if (arr[index][j] == 0) { index--; } e..
1808. 지희의 고장난 계산기 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4yC3pqCegDFAUx&categoryId=AV4yC3pqCegDFAUx&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 곱으로 수를 만드는데 한자리 수가 아닌 여러번을 눌러 만들 수 있는 수를 사용해 최소 반복 횟수를 구하는 문제. 단순 DFS로 풀기 어려웠다. 따라서 곱해서 어떤 수를 만드려면 결국 곱해지는 수들은 X의 약수여야 한다. 약수외의 수를 곱해서는 만들 수 없으므로 X의 모든 약수를 구하기로 한다. 이때 1은 곱하는 것이 ..
백준 주사위 윷놀이 재도전 1) 배열은 line별로 만드는 것이 아니고 2차원 배열로 하나로 만든다. 2) visit 처리는 배열로 처리하기 힘들다. -> 예외 상황이 너무 많음 이를테면 레인 1의 30위치에서 없어서 이동 가능하다고 생각했으나 레인 2의 30위치가 겹치므로 이동 불가한다던가... 그래서 check 함수를 따로 만들고 이동하고 자하는 road와 idx를 보낸다. 같은 road 같은 idx에 윷이 있으면 당연히 못가고 같은 road 같은 idx가 아니더라도 25, 30, 35, 40은 경로가 겹치므로 자신이 25일 때 남도 25이면 못감 근데 30같은 경우는 겹치는 경로 외에도 다른 경로에도 존재하는 수이므로 겹치는 경로의 30임을 명시해줘야함. 이전 경로가 25라던지 하는 방식.. 3) 어떤 레인에서 도착경로를 넘..
1223. [S/W 문제해결 기본] 6일차 - 계산기2 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14nnAaAFACFAYD&categoryId=AV14nnAaAFACFAYD&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 같은 유형 3번째인데 왜 단번에 풀지를 못하니.... 실수 1) result를 스택으로 잡은 것. => 숫자는 앞에서부터 분포하므로 벡터로 해서 인덱스 참조해야 됨. 2) +가 들어와서 temp 우선순위로 비울때 temp가 empty인 경우 생각 안하고 top 참조하려 한 것 3) 마지막에 num 스택에 result로..
1258. [S/W 문제해결 응용] 7일차 - 행렬찾기 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV18LoAqItcCFAZN&categoryId=AV18LoAqItcCFAZN&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com visit처리해주면서 영역 구분하면 되는 문제. 간단히 해결. /////// #include #include #include #include using namespace std; int arr[100][100]; bool visit[100][100]; int N; struct Node { int row; int col..
4014. [모의 SW 역량테스트] 활주로 건설 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeW7FakkUDFAVH&categoryId=AWIeW7FakkUDFAVH&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 높이를 기준으로 높아질 때와 낮아질 때를 구분해서 활주로를 건설할 수 있는가 없는가 분석하는 로직을 짜면 됨. #include #include using namespace std; int arr[20][20]; bool visit[20]; int N, X; int main(int argc, char** argv) { ..
[2020카카오공채] 가사 검색 보호되어 있는 글입니다.
백준 5397번 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L의 길이 ≤ 1,000,000) 강산이가 백스페이스를 입력했다면, '-'가 주어진다. 이때 커서의 바로 앞에 글..