본문 바로가기

CodingTest/BOJ

(27)
[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..
[BOJ 2577] 백준 숫자의 개수 풀이 - C++ 사용언어 : C++ 문제풀이 (1) A,B,C 값 입력받기. A*B*C 값 구하기. int형인 A*B*C값을 string으로 바꾸기 (char 배열에 저장된 거랑 동일) cin >> A >> B >> C; tmp = to_string(A*B*C); //string tmp; to_string : int형을 string으로 바꾸기 위해 사용 (2) 반복문으로 tmp(string:char 배열)에 순차적으로 접근해 해당 값을 int arr[10]배열에 넣어주기 for (int i = 0; i < tmp.size(); i++) { arr[tmp[i]-'0']++; } * tmp[i]는 char형이다. - 여기서 tmp[i] 형변환을 위해 string을 int로 바꿔주려고 하다보니 자꾸 오류가 났다. 이유는 st..
[BOJ 2562] 백준 최댓값 풀이 - C++ 사용언어 : C++ 문제풀이 for문 이용해 9번 돌리기. 변수 tmp로 값을 입력받고 받을 때마다 max_num(최댓값)과 확인. 최댓값보다 작다면 max_num값을 tmp로 바꿔주고 idx(몇번째 수인지)도 i(순서)로 바꿔줌 전체코드 #include using namespace std; int tmp; int max_num = 0; int idx = 0; int main() { for (int i = 1; i > tmp; if (tmp > max_num) { max_num = tmp; idx = i; } } cout
[BOJ 2439] 백준 별 찍기 - 2 풀이 -C++ 사용언어 : C++ 문제풀이 이중 loop 사용하기 - 바깥의 for문 : 행의 갯수, -안쪽의 for문 : 행 내에서의 별 갯수 입력 값 : 5 출력 : 총 5개의 줄, 각 줄에선 행의 번째 수 만큼 별 출력 -> 전체(5)에서 행의 번째 수 만큼 뺀 값 만큼 띄어주기 - 바깥 for문 for (int i = 1; i
[BOJ 2739] 백준 구구단 풀이 - C++ 사용언어 : C++ 문제풀이 간단한 문제. for문으로 구구단 출력하면 끝! for (int i = 1; i < 10; i++) { cout