알고리즘
-
기둥과 보 설치알고리즘 2021. 1. 18. 20:49
문제 설명 빙하가 깨지면서 스노우타운에 떠내려 온 죠르디는 인생 2막을 위해 주택 건축사업에 뛰어들기로 결심하였습니다. 죠르디는 기둥과 보를 이용하여 벽면 구조물을 자동으로 세우는 로봇을 개발할 계획인데, 그에 앞서 로봇의 동작을 시뮬레이션 할 수 있는 프로그램을 만들고 있습니다. 프로그램은 2차원 가상 벽면에 기둥과 보를 이용한 구조물을 설치할 수 있는데, 기둥과 보는 길이가 1인 선분으로 표현되며 다음과 같은 규칙을 가지고 있습니다. 기둥은 바닥 위에 있거나 보의 한쪽 끝 부분 위에 있거나, 또는 다른 기둥 위에 있어야 합니다. 보는 한쪽 끝 부분이 기둥 위에 있거나, 또는 양쪽 끝 부분이 다른 보와 동시에 연결되어 있어야 합니다. 단, 바닥은 벽면의 맨 아래 지면을 말합니다. 2차원 벽면은 n x ..
-
뱀 [삼성전자 sw 역량테스트]알고리즘 2021. 1. 17. 04:52
뱀 문제 : 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하..
-
무지의 먹방 라이브 (카카오 기출)알고리즘 2021. 1. 10. 03:26
문제 : 회전판에 먹어야 할 N개의 음식이 있다. 각 음식에는 1부터 N까지 번호가 붙어있다. 각 음식을 섭취하는데 일정시간이 소요된다. 1. 1번음식부터 먹기 시작하며 회전판은 번호가 증가하는 순서대로 음식을 앞으로 가져다 놓는다. 2. 마지막 번호의 음식을 먹은 후 회전판에 의해 다시 1번 음식이 앞으로 온다. 3. 음식 1개를 1초동안 섭취한 후에 남은 음식은 그대로 두고 다음 음식을 섭취한다. 다음 음식이란 아직 남은 음식 중 다음으로 섭취해야할 가장 가까운 번호의 음식을 말한다. 4. 회전판이 다음 음식을 앞으로 가져오는데 걸리는 시간은 없다고 가정한다. 무지가 먹방을 시작한지 k초 후에 장애로 방송이 잠시 중단되었다. 몇번 음식부터 섭취해야하는지 알고자한다. 음식을 모두 먹는데 필요한 시간이 ..
-
< 정렬 >알고리즘/개념 2020. 12. 7. 16:02
정렬 알고리즘 평균 시간 복잡도 공간 복잡도 특징 선택 정렬 O(N^2) O(N) 아이디어가 매우 간단함. 삽입 정렬 O(N^2) O(N) 데이터가 거의 정렬되어 있을때 가장 빠름. 퀵 정렬 O(NlogN) O(N) 대부분의 경우에 가장 적합하며 충분히 빠름. 계수 정렬 O(N + K) (K는 데이터 중에서 가장 큰 양수) O(N + K) (K는 데이터 중에서 가장 큰 양수) 데이터의 크기가 한정되어 있는 경우에만 사용이 가능하지만 매우 빠르게 동작함. 정렬 알고리즘 핵심 아이디어 선택 정렬 가장 작은 데이터를 '선택'해서 정렬되지 않은 데이터 중에서 가장 앞쪽에 있는 데이터와 위치를 바꾸는 방법임. 삽입 정렬 데이터를 앞에서부터 하나씩 확인하며 데이터를 적절한 위치에 '삽입'하는 방법임. 퀵 정렬 기준..
-
< 코딩테스트 개요 >알고리즘 2020. 12. 3. 00:03
# 팀노트 준비 (30P) # 코드업 사이트의 [문제] - [문제집]에서 [기초 100제] 풀기 (대부분 구현 문제로 구성) # 코드업에서 200문제 풀고 백준으로 넘어가는 것을 추천한다고 한다. # 책을 읽으며 백준 온라인 저지(solved.ac)에서 유형별 알고리즘을 찾아 풀어볼 것을 권장한다. # 이 책으로 공부한 후에 백준 온라인 저지의 sw 역량테스트 문제를 푸는 것을 추천한다고 한다. # 카카오에 지원하거나 카카오의 문제 스타일을 확인하고 싶다면 프로그래머스의 문제를 반드시 풀라고 한다. # sw역량테스트 A형을 응시해보는 것을 추천한다고 한다. (DFS/BFS를 활용해야하는 탐색과 시뮬레이션 문제 유형을 자주 출제한다고 한다. ) # PyPy는 때때로 C언어보다 빠르게 동작한다고 한다. ( ..
-
그룹 함수 (ROLLUP , CUBE , GROUPING SETS)알고리즘 2020. 11. 26. 20:17
1. ROLLUP A컬럼의 서로 다른 원소의 개수가 M개이고 B컬럼의 서로 다른 원소의 개수가 N개라고 가정하자 SELECT A , B , SUM(C) FROM 테이블_ABC GROUP BY ROLLUP( A , B ) A(1)와 B(1)에 관한 C의 합이 나오고 A(1)와 B(2)에 관한 C의 합이 나오고 ... A(1)와 B(N)에 관한 C의 합이 나오고 해당 A(1) 전체에 관한 C의 합이 나오고 A(2)와 B(1)에 관한 C의 합이 나오고 A(2)와 B(2)에 관한 C의 합이 나오고 ... A(2)와 B(N)에 관한 C의 합이 나오고 해당 A(2) 전체에 관한 C의 합이 나오고 A(M)와 B(1)에 관한 C의 합이 나오고 A(M)와 B(2)에 관한 C의 합이 나오고 ... A(M)와 B(N)에 관..
-
알고리즘 TIP알고리즘 2020. 11. 26. 01:03
# 문제를 읽으면서 조건을 종이에 손으로 작성할 것 # 코딩하기 전에 설계에 시간을 많이 투자할 것 # 설계가 끝났다면 코딩하기 전에 Test case를 많이 넣어서 설계를 검증할 것 # 각각의 함수가 무슨 일을 하는지 말로 명확하게 정의할 것 # 각각의 변수가 무슨 일을 하는지 말로 명확하게 정의할 것 # 디버깅할때는 한줄 한줄 곱씹으면서 봐야한다. # 런타임에러가 발생한다면 코드를 순서대로 주석처리하고 실행해서 런타임에러가 발생한 코드를 찾아야 한다. # 디버깅을 하면서 진짜 왜 틀린지 모르겠다는 생각이 들때 브레이크포인트를 걸어서 찾아준다. # c언어 기준 int의 범위는 21억까지 이고 long int의 범위는 900해 그냥 된다고 보면 된다.