- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- baek joon
- 다이나믹 프로그래밍
- Algorithm
- 삼성 알고리즘
- ubuntu
- BFS
- 동적계획법
- simulation
- 넓이 우선 탐색
- cube sound
- Visual Studio Code
- BOJ
- 배틀
- 우분투
- 그래프
- apache
- sw expert academy
- 백준
- 시뮬레이션
- C++
- 아파치
- dp
- dfs
- 공연
- dynamic programming
- Graph
- filezila server
- 비주얼 스튜디오 코드
- 알고리즘
- 춤
목록simulation (6)
댄코 - 댄싱코딩
개미를 실제로 움직이며 시뮬레이션 해봤는데 시간초과가 떴다. 그리고 개미가 마주보면 무조건 뒤 돌게 되는데 문제에 한점에서 겹쳤을 때 뒤 돈다고만 적혀있어서 헷갈렸다. 규칙이 있는데 말로 설명하기가 좀 어렵다.개미가 한점에서 마주쳤을 때 개미는 서로 처음에 주어진 막대로 떨어지기까지 거리를 맞 교환하게 된다. 따라서 처음에 주어진 거리에서 아이디가 양수면 오른쪽끝과 현재 포지션사이의 거리아이디가 음수면 왼쪽끝과 현재 포지션사이의 거리를 정렬하면 개미가 떨어지기까지 거리를 알 수 있다. 또한 막대 맨 왼쪽 또는 오른쪽에 있는 개미가 우선적으로 떨어지게 된다. 정렬된 개미 배열에서 거리가 가장 적은 개미 부터 검사해서개미의 아이디가 양수면 맨 오른쪽 개미가 떨어지고개미의 아이디가 음수면 맨 왼쪽 개미가 떨어..
https://www.acmicpc.net/problem/1024 처음에 나누는 수 L을 짝수일 때, 홀수일 때로 나눠서 나온 수를 수열의 가운데 있는 숫자라고 정하고,그 수 앞뒤로 연속되는 숫자를 출력하는 방식으로 했는데 94%에서 틀렸습니다가 나왔다. 반례는 찾지 못했다. 수학적 지식이 있으면 쉽게 풀 수 있는 문제였다. 우선 N 은 길이가 L인 연속된 수의 합이다. 여기서 수열의 처음 시작인 x와 L을 알면 수열 리스트를 알 수 있다.x를 구하기 위해서 다음과 같은 식을 세울 수 있다. 여기서 t는 1부터 L-1 까지의 합 (L-1) * L / 2의 식을 사용하면 쉽게 구할 수 있다. 이때,x는 0보다 커야 하고,N-t는 L로 나눈 나머지가 0이어야한다(정수). #include using names..
https://www.acmicpc.net/problem/1107 정말 고통스러웠던 문제였다. 처음에 입력받은 채널의 숫자를 각 자리별로 나눠서 고장난 번호인지 검사를 했는데 반례가 매우 많았다. 마지막엔 브루트 포스 방식으로 풀었는데 무슨 이유에선지 자릿수를 구하는 pow()함수에서 에러가 나서 틀렸다. 멘붕에 멘붕이 거듭된 문제다. 채널이 500,000개라서,채널이 0일때 +,-버튼으로 원하는 채널까지 이동하는 횟수채널이 1일때 +,-버튼으로 원하는 채널까지 이동하는 횟수...각각 버튼이 고장났는지 검사(int possible(int n) : 고장났으면 -1, 안고장 났으면 누르는 숫자의 갯수 리턴)하면서 계속해서 계산한다. 계산 값은 현재 버튼에서 +,-로 이동하는 횟수(abs(N-i)) + 현재 ..
처음에 C++쓰는 김에 배열을 사용해서 circleQueue 클레스로 만들어보자 했는데 계속 틀렸습니다가 떴다.반례를 못찾아서 다시 덱으로 구현했다.덱의 맨 앞부분의 숫자가 현재 찾고자 하는 숫자와 같으면 덱에서 pop()아니라면 현재 찾고자 하는 숫자의 인덱스가 앞쪽에 가까운지, 뒤쪽에 가까운지 검사앞쪽에 가까우면 덱의 맨 앞 원소를 덱의 맨 뒤로,뒤쪽에 가까우면 덱의 맨 뒤 원소를 덱의 맨 앞으로 옮긴다.위 과정을 입력받으로 받은 큐가 빌 때까지 반복한다. #include #include #include using namespace std; deque dq;int getIndex(int n){ int ret = 0; for (int i = 0; i < dq.size(); i++) { if (dq[i]..
스택을 이용해서 푼다. 처음 주어진 64cm짜리 막대기를 스택에 저장후 스택의 top()을 꺼내 반으로 잘라서 다시 스택에 넣는다. 이때, 반으로 자른것을 버렸을 때 현재 남아있는 막대기들의 합은 전체크기 - 방금 자르고 나서 버린 막대기 길이 == fRod - rods.top() 가 된다. 이것을 원하는 크기가 나올 때 까지 반복한다. #include #include using namespace std; int main(){ int N,min = 0; int fRod = 64; stack rods; scanf("%d",&N); rods.push(fRod); while(fRod > N){ min = rods.top(); rods.pop(); rods.push(min/2); rods.push(min/2);..
처음에 1팀과 2팀, 3팀과 4팀 ... i(홀수)팀과 i+1팀이 붙는다.이때 라운드가 올라가면 4팀이 이겼을 경우 4(짝수)팀 이 2팀으로, 3팀이 이겼을 경우 3(홀수)팀이 2팀으로 배정받는다. 이긴팀이 짝수일 경우 배정받는 숫자는 n/2이긴팀이 홀수일 경우 배정받는 숫자는 (n+1)/2 따라서 김지민과 임한수가 붙기까지 위의 두 경우로 숫자를 배정받다보면 서로 붙게되는 라운드가 나온다. 이때, 김지민이 짝수 i 를 배정받았다면 임한수팀의 숫자는 i-1 (ex, 김지민 = 4, 임한수 3(=4-1))김지민이 홀수 i 를 배정받았다면 임한수팀의 숫자는 i+1 (ex, 김지민 = 5, 임한수 6(=5+1))이 되어야한다. #include using namespace std; int main(){ int ..