본문 바로가기

전체 글723

[백준 1550] 16진수 [C] 소스코드 #include int main() { int N; scanf("%X", &N); printf("%d", N); } 출처 1550번: 16진수 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. www.acmicpc.net 2021. 8. 4.
[백준 15649] N과 M (1) [C] 풀이 depth가 0일 때는 배열에 첫 수를 넣어주고, 아닐 때는 배열에 없는 수를 찾아서 넣어준다. void BT(int depth){ for (int i = 1; i 2021. 8. 4.
[백준 2606] 바이러스 [C] 풀이 입력받은 컴퓨터 쌍을 서로 접근할 수 있도록 반대 쌍 또한 값을 설정해주었다. 그리고, 이전에 접속한 컴퓨터에서의 탐색(중복)을 막기 위해 컴퓨터 번호에 해당하는 num배열의 값을 증가시켰다. 소스코드 #include int arr[100][100], num[100], N, cnt; void dfs(int worm){ cnt++, num[worm] = 1; for (int i = 0; i < N; i++) if (arr[worm][i] && !num[i]) dfs(i); return; } int main(){ int line, x, y; scanf("%d %d", &N, &line); for (int i = 0; i < line; i++){ scanf("%d %d", &x, &y); arr[x-1].. 2021. 8. 4.
[백준 2003] 수들의 합 2 [C] 풀이 start, end로 배열의 index를 조작하여 합을 구하다가 M 이상일 때는 start가 가르키는 값을 빼고, start를 증가시킨다. M 미만일 때는 end가 가르키는 값을 더하고, end를 증가시킨다. 위 과정을 거친 후 sum이 M과 동일할 때, cnt를 증가시킨다. 소스코드 #include int main(){ int N, M; scanf("%d %d", &N, &M); int arr[N]; for (int i = 0; i < N; i++) scanf("%d", &arr[i]); int start = 0, end = 0, sum = 0, cnt = 0; while (end 2021. 8. 4.
[백준 11441] 합 구하기 [C] 풀이 "백준 11659, 구간 합 구하기 4"와 비슷한 문제이다. 단 sum에 저장되는 큰 수의 절대값이 1,000,000,000이므로 int형으로 선언해도 된다. 소스코드 #include int sum[100001]; int main(){ int N, M, first, last, num; scanf("%d", &N); for (int i = 1; i 2021. 8. 3.
[백준 11660] 구간 합 구하기 5 [C] 풀이 편의를 위해 합 또한 2차원 배열로 저장을 해주었다. 다음은 문제의 예제로 주어진 표에 대한 누적 합을 저장한 배열 sum이다. [x, y]가 의미하는 바는 [1, 1] 부터 [x, y]까지의 누적 합이다. 만약, [2, 3](초록색), [4, 4](노랑색) 구간의 합을 구할 때, [2, 3]을 기준으로 불필요한 누적 합인 [1, 4](=10), [4, 2](=24)을 빼주면 된다. 하지만, [1, 4]와 [4, 2]를 빼는 과정에서 공통된 누적 합(분홍색)을 두번 빼므로, [1, 2]를 더해주어야 한다. 정리하면 다음과 같다. // input :: 4 4 2 3 sum[x2][y2]- sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1] // ex) [4, 4] -.. 2021. 8. 3.