본문 바로가기

CodingTest

(33)
[BOJ 1193] 백준 분수찾기 풀이 - C++ 사용언어 : C++ 문제풀이 (1/1), (1/2,2/1), (3/1,2/2,1/3) , (1/4,2/3,3/2,4/1) ... 대각선을 기준으로 각 분수들은 분자 분모의 합이 동일하다. 1+1=2, 1+2=3, 2+1=3, 3+1=4, 2+2=4, 1+3=4, 그리고 대각선 별 각 분수들의 갯수는 하나씩 증가한다 (1/1 1개, 1/2 2/1 2개, 3/1 2/2 1/3 3개) * 지역변수 x는 (1)대각선 분수들의 갯수이면서 (2)분자분모의 합이 된다. (여기서 (1)과 (2)는 값이 1만큼 차이나는데 분수값을 출력할 때 cnt+1로 계산해준다) (1) 입력 값 x 순서 분수의 분자 분모 합이 얼마인지 계산하기 cin >> x; int cnt = 1; //갯수가 한개(1/1)부터 시작 while (x..
[BOJ 10816] 백준 숫자 카드 2 풀이 - C++ 사용언어 : C++ 1. 이진탐색, 2. 맵 문제풀이 * binary search(이진탐색) 사용 숫자카드 값을 오름차순으로 정렬 후 해당 value값의 최소index,최대index를 구해 둘의 차이를 구한다. 1. 숫자 카드 값 배열에 대입하고 오름차순으로 정렬 cin >> N; for (int i = 0; i > arr[i]; } int start; int end; int center; sort(arr, arr + N); 2. 최소 index, 최대 index 구하는 함수를 이용해 두 index의 차 구하기 int start; int end; int center; sort(arr, arr + N); //오름차순으로 정렬 cin >> M; for (int j = 0; j ..
[BOJ 1654] 백준 랜선 자르기 풀이 - C++ 사용언어 : C++ 문제풀이 * binary search(이진탐색) 사용 (1) for문으로 arr배열에 랜선길이 대입하기 (동시에 랜선 최대값 구하기) int max_num = 0; for (int i = 0; i > arr[i]; if (arr[i] > max_num) max_num = arr[i]; } (2) while문(이진탐색)으로 최대 랜선 길이 구하기 (N개와 비교) int max_length = 0; while (start max_length) max_length = center; } } 전체코드 #include using namespace std; #include int K, N; int arr[10000]; int main() { cin >> K >> N;..
[BOJ 1920] 백준 수 찾기 풀이 - C++ 사용언어 : C++ 문제풀이 * binary search(이진탐색) 사용 - 전역변수 int N, M; int tmp; int A[100000]; -main함수 int main() { ios::sync_with_stdio(false); cin.tie(0); // 위에 두개 작성해야 시간초과 안난다 //N만큼 A배열에 값 저장하기 cin >> N; for (int i = 0; i > A[i]; } //이진탐색을 사용하기 위해 오름차순으로 정렬 sort(A, A + N); //M만큼 값 존재유무 확인하기 cin >> M; for (int i = 0; i > tmp; cout > N; for (int i = 0; i >..
[BOJ 2331] 백준 반복 수열 풀이 - C++ 사용언어 : C++ 문제풀이 * 다음 값을 가진 index의 check값이 0이 아닐 때까지 while문 실행한다. while문을 실행할 때마다 cnt를 +1하고 해당 cnt값을 check배열 해당 index에 저장.(수열에 남는 수 갯수 출력해야 함) -다음 값 구하는 함수 현재 값이 0이 될 때까지 10으로 나눈 나머지 값을 다음 값에 저장-> 현재 값10으로 나누기 int next_num(int bnum) { int nnum = 0; //다음 값 while (bnum != 0) { //현재 값 nnum += pow(bnum % 10, P); bnum /= 10; } return nnum; } - 반복되는 수열 갯수 찾기 int next = next_num(A); //처음 값 설정해주기 while (..
[BOJ 2606] 백준 바이러스 풀이 - c++ 사용언어 : C++ 문제풀이 * main함수에서 인접리스트 만들고 1에서 시작하는 dfs 돌려주기. 노드 방문할 때마다 result(답)증가 - 전역변수 설정 int computer_num; //총 컴퓨터 갯수 int pair_num; // 연결된 쌍 갯수 int network[101][101] = { 0 }; //2차원 배열로 만든 인접리스트 bool visited[100] = { false }; //해당 컴퓨터가 방문됐는지 기록 저장 int result = 0; //답 (1) main함수에서 입력값들을 이용해 리스트만들기 (network[a][b], network[b][a] 둘 다 설정해줘야 함) cin >> computer_num; cin >> pair_num; for (int i = 0; i < ..
[BOJ 8958] 백준 OX퀴즈 풀이 - C++ 사용언어 : C++ 문제풀이 * 연속해서 답을 맞췄을 경우 한 문제당 배점이 높아진다 (1)테스트케이스 만큼 반복문 돌리기 cin >> T; for (int i = 0; i > answer; //string answer (해당 문자열) int num = 0; int point = 0; //num:현재 점수 point:현재 배점 for (int j = 0; j < answer.size(); j++) { if (answer[j] == 'O') { //문..
[BOJ 3052] 백준 나머지 풀이 - C++ 사용언어 : C++ 문제풀이 -변수 int arr[42]; int tmp; //값 입력받을 때 사용할 변수 int cnt; //답 (서로 다른 나머지가 몇 개 있는지 저장) (1) 나머지 갯수 저장하는 배열 생성 // 나머지 값이 index인 수가 몇 개인지 저장하는 배열 // 즉, 각 배열엔 해당 index가 나머지인 숫자의 개수가 저장돼있음 int arr[42]; (2) 반복문으로 입력받은 수의 나머지를 구해 arr의 해당 index의 값을 1 증가해주기 for (int i = 0; i > tmp; arr[tmp % 42]++; } (3) 0부터 41까지 돌면서 (42로 나눌 때 나머지가 될 수 있는 값들) 해당 index의 값이 1이상이면 cnt 값 증가해주기 for..