본문 바로가기

BOJ16

[BOJ] 16926. 배열돌리기 1 https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 배운점 : 규칙적으로 돌리면 코드가 더 깔끔해진다. ^^ ( ​ 죄송합니다.. 설명하려고 그림 그렸는데 다 푼 문제에 똥을 뿌려버렸네요 ​ 그.. 삽입정렬 아시죠? 2,3,4,5 에서 배열을 추가하지 않고 옮기려면 어떻게 했나요? ​ X 2 3 4 5 맨 뒤에 1칸을 더 할당해서 맨 오른쪽부터 왼쪽으로 .. 2021. 8. 30.
[BOJ] 12865. 평범한 배낭(0-1 knapsack) ttps://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net 그리디를 하면 망해버립니다. ​ 처음에 0-1 knapsack이란걸 모르다가, 이건 DP인것 같은데 DP를 어떻게 해야할까? 라는 고민을 했습니다. 그 다음에 했던건 그리디의 느낌으로.. ​ 1. 실패한 과정 (그리디) Value 순으로 내림차순 정렬을 했습니다. 맨 위에부터 계속 value를 더합니다. 그다음 w도 누적으로 더해줍니.. 2021. 8. 20.
[BOJ] 1016. 제곱ㄴㄴ수 (에라토스테네스의 체) https://www.acmicpc.net/problem/1016 1016번: 제곱 ㄴㄴ 수 어떤 수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min과 max를 포함한 사이에 제곱ㄴㄴ수가 몇 개 있는지 출력한다. www.acmicpc.net 풀이방법 : 에라토스테네스의 체 + 약간의 조정 (제한시간 2초) ​ 접근 : 가장 naive한 방법으로 생각해봤다. for( i = 2; i 2021. 7. 8.
[BOJ] 1080. 행렬 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 그리디 알고리즘... 매 순간마다 최적의 선택을 한다. 결론이 나왔을때 이것이 최고가 아닐수도 있다. 하지만 그렇게 푸는거다. ​ 이 문제는 그리디 알고리즘인데, 가장 적게 뒤집으면서 B 행렬과 같은지 판단해야한다. ​ 난 무지성인간이라 처음에 그냥 브루트포스로 다 뒤집었다. 이게 최적이 될리가 없었다. 평소에 일단 완전탐색처럼 풀고, 비효율적인걸 걷어내는식으로 했는데.. 이건 그 방식으로 접근하다가 머리가 너.. 2021. 3. 16.
[BOJ] 2573 빙산 www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net #include #include typedef long long ll; using namespace std; int board[305][305]; int board2[305][305]; bool visited[305][305]; int mx[4] = {0,0,1,-1}; //동 서 남 북 int my[4] = {1,-1,0,0}; int year; int solve(int n,int m) { int tx,.. 2021. 2. 23.
[BOJ] 2839. 설탕배달 #include #include #include #define MAX 10000001 typedef long long ll; using namespace std; int main(void) { int num; int sum = 0; int cnt; scanf("%d",&num); cnt = num / 5; if(num % 5 != 0) { for(int i = cnt; i >= cnt; i--)//500원을 많이 쓸 수록 좋음 { if( (num-5*i) % 3 == 0) { sum += i + (num- 5*i) / 3; break; } } }else{ printf("%d\n",num/5); return 0; } /* if(sum) printf("%d\n",sum); else printf("-1\n").. 2021. 2. 10.
728x90