일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- #recursion #strcmp #deque
- 19년 3회
- 2019년10월
- #시뮬레이션
- #최단거리 #최소거리
- #BFS노필요.. #홈방범서비스
- #DFS #백트래킹
- #에라토스테네스의채 #소수판별
- #주사위 굴리기 #시뮬레이션
- SW개발 테스트
- #백준 #알고리즘 #SWEA #핀볼게임
- #DFS #BFS #라인
- #시뮬레이션 #recursion
- 정보처리기사 실기
- #부분집합 #dfs
- #시뮬레이션 #미생물 격리
- bruteforce #DFS #완탐
- BFS
- #dfs
- #dfs #벽돌깨기 #swea
- #bfs
- #pair배열
- #시뮬레이션 #dfs
- 취업준비생
- 실기
- #dfs #완전탐색
- Today
- Total
목록알고리즘( C++ ) (37)
Hokusai
사다리 조작 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초512 MB8535224796120.578%문제사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다.초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 접하면 안된다. 또, 가로선은 점선 위에 있어야 한다.위의 그림에는 가로선이 총 5개 있다. 가로선은 위의 그림과 같이 인접한 두 세로선을 연결..
[문제]기존 배열(test)에서 test2 배열 순서대로 피자를 먹는 방법의 이동거리가 최소인 값 찾기.test배열을 원판이라 생각하고 진행. =======================================================================[Idea]Recursion(재귀)를 통해서 완성할 수 있다. 우측으로 가는 방향(+)과 좌측으로 가는 방향(-)를 동시에 진행해서 dfs를 2개로 돌린다.그렇게 깊이 들어가면서 값이 최소인 것을 찾는 방법이다. 완벽한 풀이인지는 모르겠지만 이런 방법으로 풀면 되겠다는 생각에 글을 쓴다. [Codes]
[문제]1부터 N까지의 수 중 C개를 고르는 문제1) 순서가 상관있는 경우(중복 有) - Code 12) 순서가 상관없는 경우(중복 無) - Code 2 =======================================================================[Idea]Recursion(재귀)를 통해서 완성할 수 있다. 기존 수를 가지고 있는 arr 배열, 해당 node를 방문했는지 확인하는 visited배열, 그리고 완성된 배열을 집어넣는 str배열이 있다. 재귀를 통해서 방문한 노드는 dfs를 하지않고 가는 식으로 진행한다. [Codes]기본 main은 동일하다 . : 순서 상관 有 : 순서 상관 無 이러한 경우는 다양한 문제에서 적용이 가능하다. 예를들어 몇개의 공을 뽑아 연산..
민기는 핀볼 게임을 개발 중에 있다. 핀볼게임은 N x N 크기의 핀볼 게임판에 정사각형 블록과 4가지 형태의 삼각형 블록들이 섞여 있고, 여기에 추가적으로 웜홀과 블랙홀이 존재한다. 핀볼게임의 게임판의 하나의 예는 아래 [그림1]과 같다. [그림1]각 블록들은 일정한 번호로 주어지는데, 블록들의 번호와 모양은 아래 [그림2]와 같다. [그림2] 웜홀과 블랙홀은 각각 아래 [그림3]의 번호로 주어진다. [그림3] 게임판 위에서는 작은 핀볼 하나가 상, 하, 좌, 우 중 한 방향으로 움직인다. 핀볼은 블록이나 웜홀 또는 블랙홀을 만나지 않는 한 현재 방향을 유지하면서 계속 직진하며,블록의 수평면이나 수직면을 만날 경우 방향을 바꿔 반대 방향으로 돌아오고, 경사면을 만날 경우에는 직각으로 진행 방향이 꺾이게..
핀볼게임 (SWExpertAcademy문제)를 풀었을 때 테스트케이스 50개 중 49개만 맞고 런타임에러(Runtime Error)가 떴었다. 기존에 알고 있던 런타임에러가 나는 상황은 배열의 인덱스를 벗어난 경우(-1이나 길이 50개짜리 배열에 50이라는 값의 idx를 참조) 정도만 알고 있었는데 검색을 해보니 굉장히 많은 상황이 있었다. 배열에 할당된 크기를 넘어서 접근했을 때전역 배열의 크기가 메모리 제한을 초과할 때지역 배열의 크기가 스택 크기 제한을 넘어갈 때0으로 나눌 떄라이브러리에서 예외를 발생시켰을 때재귀 호출이 너무 깊어질 때이미 해제된 메모리를 또 참조할 때프로그램(main 함수)이 0이 아닌 수를 반환했을 때 참고하자.
기존에 2개이상의 수(int 등)을 포함하는 배열을 활용하면 참 좋겠다 했는데 Pair 클래스, 즉 2개이상의 숫자를 담을 수 있는 배열을 선언할 수 있다는 것을 이제알았다...!!!!!!!배열느낌으로 항상 queue, stack으로 넣어서 풀었는데 pop하면 없어져서 다시 push하는 귀찮음이 존재했는데 그냥 배열 자체가 있다는 걸 알아내고 열이받았다.... 여태까지 그렇게 풀었는데...활용법은 간단하다. 아래 코드를 보자 실행결과도 잘 나온다. 하 이제 알았으니 잘 써먹어봐야겠다.
Programmers 문제 - 소수의 합 [시간제한]모든 테스트 케이스를 합쳐 1초[메모리제한] 512MB[문제]2부터 N까지의 모든 소수의 합을 구하세요. N이 7이라면 {2,3,5,7} = 17을 출력 하시면 됩니다.N의 범위는 2이상 10,000,000이하 입니다. 효율성 테스트의 모든 시간 제한은 1초입니다. =======================================================================[Idea]방법 1) O(n^2)로 다 돌려서 확인하는 경우: 기존의 소수를 구하는 방법이다. 이 방법은 n^2으로 시간복잡도가 안좋다. 효율성 4개 다 틀림방법 2) O(n^2)로 다 돌려서 확인하는 경우21과 똑같은 원리이지만 시간을 줄이기 위해 이중for문 내 ..
연산자 끼워넣기 (2) 성공시간 제한메모리 제한제출정답맞은 사람정답 비율2 초512 MB22413712463.265%문제N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자의 개수는 N-1보다 많을 수도 있다. 모든 수의 사이에는 연산자를 한 개 끼워넣어야 하며, 주어진 연산자를 모두 사용하지 않고 모든 수의 사이에 연산자를 끼워넣을 수도 있다.우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안된다.예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연..