Notice
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 웹
- 회귀 수식
- 리버싱 문제
- CodeEngn
- 알고리즘
- 리눅스
- C언어
- 머신러닝
- 인공지능
- webhacking.kr
- MySQL
- abex crackme
- 워게임
- html
- 웹해킹
- 리액트
- 자바스크립트
- 컴퓨터 구조
- 보안
- 어셈블리어
- 해킹
- 백준 알고리즘
- writeup
- 백준
- php
- sql injection
- 넘파이
- 리버싱 워게임
- webhacking
- 리버싱
Archives
- Today
- Total
인공지능 개발일지
[백준 C] 10818번 동적할당으로 풀기 본문
728x90
이 문제는 최대,최소를 구하는 문제이다.
코드는 아래와 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#include<stdio.h>
#include<stdlib.h>
int main() {
int n, max,low;
scanf("%d", &n);
int* arr = NULL;
arr = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
max = *arr;
low = *arr;
for (int i = 0; i < n - 1; i++)
{
if (arr[i] < arr[i + 1])
{
if (arr[i + 1] > max) {
max = arr[i + 1];
}
if (arr[i] < low) {
low = arr[i];
}
}
else {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i+1] < low) {
low = arr[i+1];
}
}
}
printf("%d %d", low, max);
free(arr);
}
|
cs |
처음에 14번째 줄의 for문에서 (int i=0;i<n;i++)을 해서 런타임에러 오류가 났는데
알고보니 배열의 크기를 넘어서서 오류가 난 것이었다.
그래서 n-1을 하니까 풀렸다.
굳이 동적할당을 쓸 필요는 없는 문제였지만 동적할당을 배운지 얼마 되지 않아
복습할겸 써보았다.
위 문제를 풀면서 포인터를 배열처럼 사용한다는 것의 의미는 배열자체가 연속된 메모리의 할당이므로
바로 포인터++을 하거나 포인터의 인덱스를 바꾸는 것은 자료형의 크기만큼 이동해주므로
배열과 비슷한 역할을 한다는 것이다.
728x90
'개발 지식 > 알고리즘' 카테고리의 다른 글
[백준 알고리즘 1712] 손익분기점 (Python) (0) | 2022.05.29 |
---|---|
[백준 알고리즘 1065] 한수 구하기 (Python) (0) | 2022.05.27 |
[백준 알고리즘 4673] 셀프 넘버 (Python) (0) | 2022.05.26 |
[BOJ / 그리디] 1931번 회의실 배정 C++ 풀이(+sort/pair사용법) (0) | 2022.02.08 |
[BOJ / 백준] 2798번 블랙잭 C++ 풀이 (0) | 2022.01.31 |