삼성기출 [알고리즘] 백준 5373 3x3x3으로 된 큐브를 돌리는 삼성 기출 문제였다. 다음과 같이 12x9로 큐브를 표현하고 각각 돌릴때마다 행렬값을 움직여줬다. 구현 자체가 특별한 규칙보다는 각 상황에 맞게 for문과 if문을 반복 사용해줘서 코드가 굉장히 복잡하고 이쁘지도 않다. 구현 자체 시간도 오래 걸렸는데 마지막에 2군데에서 고비를 겪었다. 1. 내 주변만 돌려주는것이 아니라 내 면도 돌려야한다. L을 돌리면 B,... 삼성기출구현알고리즘시뮬레이션구현 [알고리즘] 백준 15685 선이 일정한 규칙으로 증가하는데 규칙대로 선을 이어보고 선으로 이루어진 박스를 체크하는 문제다. 결국 요구하는건 주어진 규칙대로 선을 그릴 수 있냐고 묻는 문제다. 지렁이가 각 세대를 증가하면서 길이가 점점 2배가 된다. 그리고 각 움직임에는 방향성이 존재한다. 처음에 접근한 방법은 각 방향을 기록해보고 세대를 증가할때 다시 거슬러 가는 방법이었다. 회전이라는 말때문에 처음에 당황했는데 방향... 삼성기출구현알고리즘시뮬레이션구현 [BOJ / C++] 14888 연산자 끼워넣기 (삼성기출) 문제풀이 주어진 수의 순서를 바꿀 수 없으므로, 인덱스 0부터 N-1까지 모두 선택하여야 한다. 따라서 dfs함수의 레벨을 주어진 수 배열의 인덱스로 따지고, N-1레벨까지 지금까지의 총 합 sum인자와 함께 재귀호출하며 백트래킹한다. 이때 가장 맨 앞의 숫자는 연산자와 관계없이 총 합에 언제든지 들어가있으므로, 첫 호출 형태는 다음과 같다. dfs(1, numbers[0]) : 1레벨 (1... psbojBacktracking삼성기출bruteforceBacktracking [알고리즘] 백준 14889 N개 팀중에서 N/2개를 뽑아 팀을 정하고 나머지 N/2명의 팀과 점수가 최소가 되게하는 문제다. 결국 핵심은 N개중에서 N/2를 뽑는것이다. 조합으로 생각해볼수 있을거같다. python 을 사용했다면 combination을 사용했을테지만 C++로 라이브러리 사용없이 직접 구현해보았다.(c++도 순열과 조합을 표현하는 permutation이 있긴하다.) 처음 시도하였을때 너무도 자연스럽게 트... 삼성기출구현알고리즘시뮬레이션구현 [BOJ] 19237 - 어른 상어 초기는 모든 상어가 자기 위치에 냄새를 뿌린다. 1초마다의 이동 상어가 K번 이동하면 (k초뒤) 냄새는 사라진다. 이동 후 한칸에 여러 상어가 있으면 가장 번호가 작은 상어만 살아남는다 (1번이 제일 쎔) 이동 방향은 1 위, 2 아래, 3 왼쪽, 4 오른쪽으로 정의한다. 1번에 만족하는 칸이 없으면 내 냄새가 있는 칸 만약 만족되는 칸이 여러개면, 입력으로 주어진 바라보는 방향 마다의 특정... 알고리즘boj구현삼성기출boj [백준 15685번 드래곤 커브] C++ [15685번] 새로 찍히는 점을 기준으로 지금까지 저장했던 방향을 역순으로 돌면서 새로운 점을 찍어주면 되는 간단한 문제였다. 필자는 초반에 좌표를 저장해서 찍어야하는 문제로 풀이 방향을 잡아나갔으나 구현이 녹록치 않아 다른 방법을 생각해 본 결과 방향을 이용하면 풀린다는 결론을 얻었다(1시간 반 정도 쓴 것 같다). 2차원 배열 map[101][101]을 생성하고 제일 처음 주어지는 x,... 코딩테스트C삼성기출C [백준 16234번 인구 이동] C++ [16234번 인구 이동] 개인적으로 플레5 난이도의 큐빙보다 어려웠다. [5373 큐빙] 아이디어를 떠올리기까지는 오래 걸리지 않았다. 2중 for문으로 나라 전체를 돌면서 BFS(혹은 DFS)를 통해 마치 바이러스가 퍼지듯이 연합을 찾아주고, 각각의 연합에 맞게 평균 인구 수를 대입해준다. 더 이상 인구 이동이 일어나지 않을 때까지 반복하고 며칠 간 이동이 일어났는지 출력하면 된다. 주의... 코딩테스트삼성기출CC [19236번 청소년 상어] - C++ [19236번 청소년 상어] [19237번 어른 상어] [16236번 아기 상어] 아기 - 청소년 - 어른 상어로 이어지는 시리즈 중 중간에 있는 문제이다. 체감 난이도는 청소년 상어가 가장 까다로웠다. 일단 상어가 먹을 수 있는 물고기 크기의 최대값을 구해야 하기 때문에 가능한 모든 경우를 백트래킹으로 살펴봐야 한다. 그 점에서 DFS 알고리즘을 사용해야 함을 알 수 있었다. 그리고 2차원... 코딩테스트C삼성기출C [BOJ] 12100 - 2048(Easy) 킹받는 (Easy) ,,^^ 누구맘대로 이지야 ㅠ 다들 한번씩 플레이해봤을 2048게임과 같은 방식으로 동작하되 새로운 블록이 추가되지는 않는다. N*N크기의 보드 위의 블록을 상하좌우로 이동시키는데 이때 같은 값을 가지는 블록 두개가 충돌 시 1개로 합쳐진다. 0은 빈칸을 나타내고, 나머지 값은 2이상 2048 이하인 2의 제곱꼴이다. 최대 5번을 이동시켜서 얻을 수 있는 최대값은? 처음에... 삼성기출구현알고리즘bojboj
[알고리즘] 백준 5373 3x3x3으로 된 큐브를 돌리는 삼성 기출 문제였다. 다음과 같이 12x9로 큐브를 표현하고 각각 돌릴때마다 행렬값을 움직여줬다. 구현 자체가 특별한 규칙보다는 각 상황에 맞게 for문과 if문을 반복 사용해줘서 코드가 굉장히 복잡하고 이쁘지도 않다. 구현 자체 시간도 오래 걸렸는데 마지막에 2군데에서 고비를 겪었다. 1. 내 주변만 돌려주는것이 아니라 내 면도 돌려야한다. L을 돌리면 B,... 삼성기출구현알고리즘시뮬레이션구현 [알고리즘] 백준 15685 선이 일정한 규칙으로 증가하는데 규칙대로 선을 이어보고 선으로 이루어진 박스를 체크하는 문제다. 결국 요구하는건 주어진 규칙대로 선을 그릴 수 있냐고 묻는 문제다. 지렁이가 각 세대를 증가하면서 길이가 점점 2배가 된다. 그리고 각 움직임에는 방향성이 존재한다. 처음에 접근한 방법은 각 방향을 기록해보고 세대를 증가할때 다시 거슬러 가는 방법이었다. 회전이라는 말때문에 처음에 당황했는데 방향... 삼성기출구현알고리즘시뮬레이션구현 [BOJ / C++] 14888 연산자 끼워넣기 (삼성기출) 문제풀이 주어진 수의 순서를 바꿀 수 없으므로, 인덱스 0부터 N-1까지 모두 선택하여야 한다. 따라서 dfs함수의 레벨을 주어진 수 배열의 인덱스로 따지고, N-1레벨까지 지금까지의 총 합 sum인자와 함께 재귀호출하며 백트래킹한다. 이때 가장 맨 앞의 숫자는 연산자와 관계없이 총 합에 언제든지 들어가있으므로, 첫 호출 형태는 다음과 같다. dfs(1, numbers[0]) : 1레벨 (1... psbojBacktracking삼성기출bruteforceBacktracking [알고리즘] 백준 14889 N개 팀중에서 N/2개를 뽑아 팀을 정하고 나머지 N/2명의 팀과 점수가 최소가 되게하는 문제다. 결국 핵심은 N개중에서 N/2를 뽑는것이다. 조합으로 생각해볼수 있을거같다. python 을 사용했다면 combination을 사용했을테지만 C++로 라이브러리 사용없이 직접 구현해보았다.(c++도 순열과 조합을 표현하는 permutation이 있긴하다.) 처음 시도하였을때 너무도 자연스럽게 트... 삼성기출구현알고리즘시뮬레이션구현 [BOJ] 19237 - 어른 상어 초기는 모든 상어가 자기 위치에 냄새를 뿌린다. 1초마다의 이동 상어가 K번 이동하면 (k초뒤) 냄새는 사라진다. 이동 후 한칸에 여러 상어가 있으면 가장 번호가 작은 상어만 살아남는다 (1번이 제일 쎔) 이동 방향은 1 위, 2 아래, 3 왼쪽, 4 오른쪽으로 정의한다. 1번에 만족하는 칸이 없으면 내 냄새가 있는 칸 만약 만족되는 칸이 여러개면, 입력으로 주어진 바라보는 방향 마다의 특정... 알고리즘boj구현삼성기출boj [백준 15685번 드래곤 커브] C++ [15685번] 새로 찍히는 점을 기준으로 지금까지 저장했던 방향을 역순으로 돌면서 새로운 점을 찍어주면 되는 간단한 문제였다. 필자는 초반에 좌표를 저장해서 찍어야하는 문제로 풀이 방향을 잡아나갔으나 구현이 녹록치 않아 다른 방법을 생각해 본 결과 방향을 이용하면 풀린다는 결론을 얻었다(1시간 반 정도 쓴 것 같다). 2차원 배열 map[101][101]을 생성하고 제일 처음 주어지는 x,... 코딩테스트C삼성기출C [백준 16234번 인구 이동] C++ [16234번 인구 이동] 개인적으로 플레5 난이도의 큐빙보다 어려웠다. [5373 큐빙] 아이디어를 떠올리기까지는 오래 걸리지 않았다. 2중 for문으로 나라 전체를 돌면서 BFS(혹은 DFS)를 통해 마치 바이러스가 퍼지듯이 연합을 찾아주고, 각각의 연합에 맞게 평균 인구 수를 대입해준다. 더 이상 인구 이동이 일어나지 않을 때까지 반복하고 며칠 간 이동이 일어났는지 출력하면 된다. 주의... 코딩테스트삼성기출CC [19236번 청소년 상어] - C++ [19236번 청소년 상어] [19237번 어른 상어] [16236번 아기 상어] 아기 - 청소년 - 어른 상어로 이어지는 시리즈 중 중간에 있는 문제이다. 체감 난이도는 청소년 상어가 가장 까다로웠다. 일단 상어가 먹을 수 있는 물고기 크기의 최대값을 구해야 하기 때문에 가능한 모든 경우를 백트래킹으로 살펴봐야 한다. 그 점에서 DFS 알고리즘을 사용해야 함을 알 수 있었다. 그리고 2차원... 코딩테스트C삼성기출C [BOJ] 12100 - 2048(Easy) 킹받는 (Easy) ,,^^ 누구맘대로 이지야 ㅠ 다들 한번씩 플레이해봤을 2048게임과 같은 방식으로 동작하되 새로운 블록이 추가되지는 않는다. N*N크기의 보드 위의 블록을 상하좌우로 이동시키는데 이때 같은 값을 가지는 블록 두개가 충돌 시 1개로 합쳐진다. 0은 빈칸을 나타내고, 나머지 값은 2이상 2048 이하인 2의 제곱꼴이다. 최대 5번을 이동시켜서 얻을 수 있는 최대값은? 처음에... 삼성기출구현알고리즘bojboj