일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL
- 알고리즘
- 프로그래머스
- 코테
- 알고리즘 문제
- swexpertacademy
- sw expert
- 원서
- dfs
- English
- PyQt
- 원서읽기
- 코테 준비
- 완전탐색
- STUDYENGLISH
- 백준
- 직무면접
- BFS
- 코딩테스트
- 코테 대비
- nightroutine
- 원서읽자
- englishbook
- the midnight library
- readingbook
- D4
- MySQL
- 삼성
- sw expert academy
- 쉬운 알고리즘 문제
- Today
- Total
목록알고리즘 문제 (57)
시나브로
아무리해도 논리가 맞아서 왜 안되지하다가 i가 j로 잘못적힌거 발견했다.... 다음부터는 이런 실수하지 않길... 먼저 순열을 받으면서 각 숫자에 대한 %3의 값을 저장하고 0번부터 자리값과 숫자값이 맞는 지 확인한다. 틀리다면, 그 이후로 swap해서 2개의 숫자가 제자리에 갈수 있도록하는 자리를 찾고, 없을 때를 대비하여 제자리에 있지 않고 현재자리의 값을 가지고 있는 숫자를 저장하여 swap한다. #include void swap(int list1[], int list2[]) { int temp[2] = { list1[0],list1[1] }; list1[0] = list2[0]; list1[1] = list2[1]; list2[0] = temp[0]; list2[1] = temp[1]; } int..
가장 큰 값과 가장 작은 값은 차이가 K이하여야 되고 그 안에 있는 다이아몬드는 모두 포함되어야 되기 때문에 정렬을 이용하는 것이 좋다. 정렬한 이후, 모든 값에서 모든 경우의 수를 생각해서 가장 max값을 선택하면 된다. 처음에는 처음과 끝에서부터 한칸이 줄여나가면서 풀면 가능할 것이라고 생각했는데 줄여나가는 기준을 찾지 못해서 새로운 방법으로 풀었다. #include # define MAX_SIZE 1010 int sorted[MAX_SIZE]; // 추가적인 공간이 필요 void merge(int list[], int left, int mid, int right) { int i, j, k, l; i = left; j = mid + 1; k = left; /* 분할 정렬된 list의 합병 */ whi..
처음에는 이 문제를 while문을 돌리고 맞은 숫자들(box)과 틀린 숫자들(box1)을 set에 저장해서 각 연산마다 box와 box1에 있는 확인하였다. 이렇게 하니깐 31개의 문제 중에 29개만 맞췄다. 정답 리스트를 보니 프로그램 작동 시작이 너무 짧고 사용하는 저장공간도 너무 작아서 문제를 다시 읽어봤다. 그렇게 먼저 맞는 경우에 대한 모든 경우를 저장하고 비교하는 솔류션을 찾았다. 자료구조 set을 사용한 이유는 set은 이진 트리로 key를 찾는 속도가 다른 구조보다 훨씬 빠르기 때문이다. 또한, 내가 따로 코드 작성을 하지 않고 간단하게 코드 작성이 가능했기 때문이다. #include #include #include int main(void) { int test_case = 0; scanf..
전체 경우의 수를 탐색하였다. 3개의 카드를 뽑기 때문에 for문 3개를 이용하였다. #include #include #include #include using namespace std; int list[300010] = { 0 }; int main(void) { freopen("inp.inp", "r", stdin); freopen("out.out", "w", stdout); int n, m; scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { scanf("%d", &list[i]); } int max = 0; int box = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i != j..