KDHzoot's Github

Code for study, project, etc

자세히보기

전체 글 90

[백준 1111] IQ Test

문제 링크 : https://www.acmicpc.net/problem/1111 1111번: IQ Test 다음 수를 출력한다. 만약 다음 수가 여러 개일 경우에는 A를 출력하고, 다음 수를 구할 수 없는 경우에는 B를 출력한다. www.acmicpc.net 수학 문제라기보다 예외처리 문제에 가까웠다. 입력이 3개 이상일 때 a와 b를 구하는 방법은 간단하다. $$x_1 * a + b = x_2$$ $$x_2 * a + b = x_3$$ 위 두 식을 연립해서 a와 b를 구할 수 있다. a와 b를 구했다면 문제에서 요구하는 다음 숫자도 쉽게 구할 수 있다. 이제 예외 상황들을 하나씩 살펴보자. 1. 입력이 하나일 때 다음 수를 알 수 없으므로 A를 출력한다. 2. 입력이 두개일 때 입력이 두개일 때는 만약..

알고리즘/PS 2020.07.16

[개발 환경] visual studio 새 프로젝트 생성

아마 VS를 처음 실행시켰다면 다음과 같은 화면이 뜰텐데요 [새 프로젝트 만들기]를 선택해줍니다. 저희는 C언어 공부를 위해서 프로젝트를 생성하는 것이기 때문에 [빈 프로젝트]로 생성해주겠습니다. 선택하고 하단의 [다음] 버튼을 눌러주세요. 원하시는 프로젝트 이름을 적으시고 [만들기]를 눌러주세요 그러면 새로운 창이 크게 뜨는데요 우측 바에서 [소스 파일]을 우클릭하시고 순서대로 [추가] - [새 항목]을 선택해주세요. 새로운 팝업창이 떴습니다. [c++ 헤더파일]을 선택하고 우측 하단의 [추가] 버튼을 눌러주세요 소스 파일에 세로운 파일이 생성된 것을 확인할 수 있습니다. 새로운 프로젝트 생성이 완료되었습니다. 이제 코드 파일에 원하시는 코드를 적고 ctrl + f5를 누르시면 코드가 컴파일 됩니다.

[개발환경] visual studio 2019 설치

먼저 microsoft 사이트에 들어가서 설치 파일을 다운 받습니다. https://visualstudio.microsoft.com/ko/vs/ Visual Studio 2019 | 무료 다운로드 Visual Studio에서 코드 완성, 디버깅, 테스트, Git 관리 및 클라우드 배포를 사용하여 코드를 작성할 수 있습니다. 지금 Community를 무료로 다운로드하세요. visualstudio.microsoft.com 사이트에 들어가면 중앙에 다운로드 탭이 있습니다. 탭을 선택하고 첫번째 있는 Community 버전을 다운받아 주세요. exe 파일이 다운 완료되면 클릭해서 실행시켜주세요. 팝업창은 캡처를 못했지만 예를 눌러서 진행하시면 됩니다. 그 다음은 계속을 눌러주세요. ...다운 중... 설치가 다..

[STL] algorithm sort 함수 사용법

정렬 PS를 하다보면 데이터를 정렬한 뒤 다뤄야 하는 상황이 생긴다. 보통 이런 경우에 시간복잡도가 빠른 퀵정렬(quick sort)를 사용하는데 당연히 매번 구현하기는 번거로움으로 algorithm헤더에 이미 구현되어 있는 sort함수를 사용한다. 모든 STL의 단점이지만 미리 구현되어 있는 만큼 특정 상황에서 유동적으로 활용하려면 그에 해당하는 사용법을 외우고 있어야 된다. 사용법 1. 배열에서 사용법 sort 함수의 원형은 다음과 같다. void sort (RandomAccessIterator first, RandomAccessIterator last); #include #include using namespace std; int main() { int n; int arr[100]; cin >> n..

C++/STL 2020.07.15

[백준 1149] RGB거리

문제 링크 : https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 총 N개의 집이 있을 때, i번째 집을 칠하는 경우의 수는 총 3가지이다. 빨강, 파랑, 초록 똑같은 색은 이웃할 수 없다는 조건이 없다면 순서대로 가장 저렴한 색으로 칠하면 되지만 이웃한 집은 다른 색으로 칠해야 되므로 문제가 복잡해진다. 가장 먼저 빨간색으로 i번째 집을 칠하는 경우의 수를 생각해 보자. i번째 집이 빨간색으로 칠해지지 위해서는 i-1번째 집..

알고리즘/PS 2020.07.15

[백준 1003] 피보나치 함수

문제 링크 : https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 사용 알고리즘 : 동적 계획법 0이 출력되는 횟수와 1이 출력되는 횟수를 각각의 DP배열로 해결한다. $F_n$을 n번째 피보나치 수에서 0이 출력되는 횟수라고 가정한다면 다음과 같은 점화식이 세워진다. $$F_n = F_{n=1}+F_{n-2}$$ $F_0$은 1이고 $F_1$은 0이므로 모든 n에 대한 출력횟수를 n번의 연산으로 구할 수 있다. 1에 대한 점화식도 마찬가지로 세울 수 있다. #include int main(void){ int arr[45][2]; arr[0][..

알고리즘/PS 2020.07.13

[백준 1931] 회의실배정

문제 링크 : https://www.acmicpc.net/problem/1931 1931번: 회의실배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 기본적인 틀은 시작시간이 빠른 회의 순서대로 정렬하고 하나씩 보면서 회의를 선택하는 방법이다. 여기서 회의를 선택할 때 고려해야 되는 부분이 두가지 있다. 1. 새로운 회의는 전에 회의가 끝났던 시간보다 늦게 시작해야된다. 2. 1의 규칙을 위반하지 않는 회의들 중 가장 빨리 끝나는 회의를 다음 회의로 선택한다. (시작하는 시간 상관 없이) #include #include #define n_ 100005 using namespace std; struct node{ int s, e; }; bool op..

알고리즘/PS 2020.07.13

[백준 11399] ATM

문제 링크 : https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 모든 사람이 인출하는데 걸리는 시간의 총합이 최소가 되기 위해서는 시간이 적게 걸리는 사람부터 인출을 하면 된다. #include #include #define n_ 1005 using namespace std; int n; int arr[n_]; int main(void){ cin >> n; for (int i = 0; i < n; i++){ scanf("%d", arr + i); } sort(arr, arr ..

알고리즘/PS 2020.07.13

[백준 5904] Moo 게임

문제 링크 : https://www.acmicpc.net/problem/5904 5904번: Moo 게임 문제 Moo는 술자리에서 즐겁게 할 수 있는 게임이다. 이 게임은 Moo수열을 각 사람이 하나씩 순서대로 외치면 되는 게임이다. Moo 수열은 길이가 무한대이며, 다음과 같이 생겼다. m o o m o o o m o o m www.acmicpc.net 예시를 먼저 보면 설명이 더 이해하기 쉬울 것이다. m o o m o o o m o o m o o o o m o o m o o o m o o 재귀적으로 만들어진 세번째 moo 수열이다. 여기서 우리가 전체 문자열의 길이(s)와 중심 개인 문자열의 길이(k)를 알고 있다고 하자 위에서 그 값은 s=25, k=5 이 문자열에서 n번째 문자의 위치는 세가지 ..

알고리즘/PS 2020.07.08

[백준 1780] 종이의 개수

문제 링크 : https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1의 세 값 중 하나가 저장되어 있다. 우리는 이 행렬을 적절한 크기로 자르려고 하는데, 이때 다음의 규칙에 따라 자르려고 한다. www.acmicpc.net 먼저 가장 큰 사각형이 사용할 수 있는 종이이면 사용하고 아닐 경우 9개의 작은 종이들로 나누어 다시 검사한다. 가장 큰 사각형의 변의 길이는 최악의 경우에 3^7이 들어온다. 따라서 사용할 수 있는 종이인지 확인하는데 3^14만큼의 연산 횟수가 소요된다. 만약 사용할 수 없는 종이여서 작은 사각형 9개로 나눠어 검사해도 소요되는 총 연산은 마찬가지로 3^14이다. $$3..

알고리즘/PS 2020.07.06