본문 바로가기

전체 글153

이진탐색이란? 개념) 데이터가 정렬되어 있는 배열에서 내가 원하는 특정한 데이터를 알아내는 알고리즘 방법) 1. 찾고자 하는 데이터 : A 라고 할떄 배열의 중간에 임의의 값을 선택해 A와 비교한다. 이때 배열을 오름차순으로 정리해준다. (주로 qsort알고리즘 이용) 2. A가 중간값보다 작을 경우 -> 중간값 기준 좌측 데이터를 대상으로 비교한다. A가 중간값보다 클 경우 -> 중간값 기준 우측 데이터를 대상으로 비교한다. 3. 좌측기준으로 데이터를 비교 할때 위의 과정과 똑같이 새로운 중간값을 정해 그값을 A와 비교한다. 우측데이터도 동일하다. 4. 이런식으로 찾고자 하는 데이터 A를 찾을떄까지 반복한다. 예시) 배열 : {10, 3, 5, 14, 1, 6, 9} 오름차순 배열 : {1, 3, 5, 6, 9, 1.. 2023. 1. 27.
백준 2556번 최대값 c언어 https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 전략) 1. 버블정렬이나 다른 정렬을 통해 제일 큰 숫자를 정렬 시키는 방법을 이용할려고 했는데 숫자의 위치를 출력해야되서 쓰지 않았다. 2. 어차피 최대값이 정해져있는 문제이기 때문에 최대값을 이중배열에 하나하나 비교해서 찾아가는 방법을 쓰기로 결정 다른생각) - 만약에 최대값이 정해져 있지 않다면 result[0][0]을 기준으로 계속 비교해가면서 어디 변수에다가 최대값을 비교할때마다 저장해서 최대값을 찾아갔을것.. 2023. 1. 23.
백준 2738번 행렬 덧셈 c언어 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net 1. 이중배열을 두개 만들어서 더하고 싶지 않아서 하나로 만들어서 더하는 방식을 사용했다. 2. 더할때 j + M 을 했는데 결과가 더해지지 않아 생각해보니 i만 + N해줘야된다는 걸 알게되었다. 3. j + M 을 더했을 떄는 j의 값이 이중배열의 가로 범위를 넘는다. 따라서 답이 제대로 나오지 않았다 나의코드) #include intmain() { intN, M; inti, j;.. 2023. 1. 22.
백준 11047번 동전0 c언어 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1. 처음에 scanf받을떄 부터 K보다 받는 숫자가 크다면 break 걸라고 했는데 예제에 있는 숫자들을 모두 받아야해서 다받았다. 2. 나눗셈을 이용해서 해결할까 생각했다. 빼는게 더 쉬울것이라 생각 3. 뺄때 몇번 뺴는지 숫자를 출력을 하는것이기 때문에 뺄때 마다 count를 1씩 증가해주는 형태로 해결했다. 4. 문제가 K를 .. 2023. 1. 19.
백준 15651 - N과M(3) c언어 https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 이전문제에서는 flag를 사용해서 중복 체크를 했지만 이번문제에서는 그럴 필요가 없다. 2. flag 를 지우고 result[count] = i 로 바로바로 배열에 넣고 재귀를 돌리는 전략을 사용했다. 나의답안) #include voidDFS3(int *result, int count, int N, int M) { inti; if (count == M) { i = 0; while (i < .. 2023. 1. 17.
[리눅스]perror함수 - 오류 메시지 출력 함수 perror함수란? 리눅스에는 시스템콜 및 라이브러리 함수를 수행하다가 오류가 발생하면 사용자의 프로그램으로 오류 결과를 넘겨준다. 이때 사용하는 함수가 perror 함수이다. return 값 시스템 콜 오류 시: -1 라이브러리 함수 오류 시: NULL perror함수 형식 #include voidperror(const char *str) str에는 오류메시지 앞에 쓰고 싶은 말을 넣으면 된다. 예제 int main(void) { int fd; fd = open("file", O_RDONLY); if (fd == -1){ perror("문제가 있습니다."); exit(1); } } 출력문구 문제가 있습니다.: No such file or directory 2023. 1. 16.
백준 15650 - N과M(2) c언어 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 이전에 풀었던 N과M(1)과 매우 유사하다 단지 오름차순으로 출력이 되어야한다는것이 다르다. 2. 오름차순이니까 prev라는 변수를 따로 선언해서 prev = result[count - 1] 이라는 조건으로 오름차순을 만들어준다. 3. i = prev 조건으로 인해 while문이 돌아가면서 오름차순이 만들어진다. 4. 나머지는 전에 했던 N과M(1)의 내용과 동일하다. 나의답안) #incl.. 2023. 1. 14.
백준 15649번 -N과M(1) c언어 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 1줄씩 출력해야 한다고 생각해서 배열을 사용하여 내용물을 저장했다가 출력하자는 생각함 2. 이떄 서로 중복 없이 숫자를 골라서 저장하고 출력해야 한다. 따라서 DFS전략을 이용해 재귀문을 사용한다. 3. flag 를 사용해서 중복되는 숫자를 판별해준다. 나의 답안) #include voidDFS(int*result, int count, int N, int M) { inti,j; intfla.. 2023. 1. 11.
백준 1436번 - 영화감독 숌 c언어 https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 1. 문제 이해부터 잘해야된다. 666이 포함된 숫자들 중에서 N번째로 작은 숫자를 출력하라는 말이다. 5번째 4666 6번째 5666 7번째 6660 8번쨰 6661 여기서 생각해보면 7번째에 만약 5666 -> 6666 이된다면 6660보다 더 큰 숫자가 된다 즉 666이 연속해서 나오는 숫자들 중에서 작은순서대로 가야하는데 5666 다음으로 작은숫자가 6666이전에 6660이 존재한다.. 2023. 1. 8.
day -1 밥편 1. 밥 먹었어? Did you have lunch(breakfast/dinner)? 2. 오늘 일어나서 뭐 먹었어? Have you eaten today? (이든) Have you eaten at all today? 3. 언제 먹었어? when did you eat? 3. 뭐 먹었어? what did you have(eat)/get? 4. 배 안고파? Aren't you hungry? 5. 배고프지? You must be hungry. 6. 저녁은 어떻게 하실거에요? What are you going to do for dinner? (왓알류고나두뽈) Do you have any dinner plans? 7. 뭐 좀 먹을래? Do you want somthing to eat? (섭음 투 잇) 뭐 좀 드실.. 2023. 1. 5.
728x90