일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 그리디
- Kotlin
- 문자열
- 알고리즘
- 유니온 파인드
- 수학
- swea
- 투 포인터
- 구현
- 이분탐색
- dfs
- Network
- 후니의 쉽게 쓴 시스코 네트워킹
- Effective Java
- 백트래킹
- 시뮬레이션
- JUnit 5
- 프로그래머스
- 백준
- 세그먼트 트리
- 위상정렬
- java
- 에라토스테네스의 체
- 스택
- 동적계획법
- 완전탐색
- mst
- BFS
- CS
- 플로이드-와샬
목록전체 글 (291)
반갑습니다!
17822번: 원판 돌리기 www.acmicpc.net 풀이 시뮬레이션 문제라 문제에 나와있는데로 구현하면 해결할 수 있다. 크게 3가지 부분으로 나눠진다. 원판 돌리기 인접한 숫자 제거하기 제거할 숫자가 없으면 평균값과 비교하여 숫자 변경 각 부분별로 설명하겠다. 우선 원판을 돌리기에 앞서 원판을 데이터로 표현해야하는데 2차원 배열 c[i][j]를 이용하여 표현하였다. 가장 안쪽 원판부터 바깥쪽 원판 순서로 i값이 증가하고 각 원판은 12시 방향을 기준으로 시계방향으로 갈수록 j값이 증가하도록 표현하였다. 이제 원판을 회전시켜볼 차례이다. 원판은 시계방향, 반시계방향 모두 회전할 수 있다. deque는 앞, 뒤로 push하고 pop 할 수 있으므로 deque를 사용하여 구현하였다. deque에 한 원판..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제의 조건만 잘 유의하면 어렵지않게 풀 수 있다. Set을 사용하여 경로의 중복을 체크하였는다. 그런데 이 문제는 범위가 워낙 작아서 굳이 Set을 사용하지 않고 배열로도 해결할 수 있을 것으로 보인다. 코드 #include #include using namespace std; bool inRange(int x, int y) { return (-5
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 에라토스테네스의 체를 이용해서 소수를 미리 계산해두고 DFS를 사용하여 숫자 3개를 골라 해결하였다. 코드 #include #include using namespace std; int ans; bool chk[3001]; void precalc() { fill(chk, chk + 3001, true); chk[0] = false; chk[1] = false; for (int i = 2; i * i
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 Queue를 이용하여 2개씩 짝지어 최소공배수를 구하고, 다시 큐에 넣는 것을 반복하였다. 코드 #include #include #include using namespace std; int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } int solution(vector arr) { int answer = 0; queue q; for (int i : arr) q.push(i); while (q.size() > 1) { int a = ..
1806번: 부분합 www.acmicpc.net 풀이 투 포인터 알고리즘을 사용하여 해결하였다. 이 때 합이 s보다 같거나 큰 경우에는 정답을 찾기 위해 최솟값 비교를 해주어야한다. 코드 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, s; cin >> n >> s; vector num(n); for (int& i : num) cin >> i; int start = 0, end = 0; int sum = 0; int ans = 100001; while (true) { if (sum >= s) { ans = min(ans, end - start); sum -=..