본문 바로가기

C언어

(3)
[백준1935번] (C) 후위표기식2 (1935)후위표기식 백준 1935번 https://www.acmicpc.net/problem/1935 착안점 double형 스택을 구조체로 선언 +, -, *, /인 경우를 제외하면 피연산자이므로 int형 배열에 있는 원소를 push 테크닉 push(ch-'A') 입력 예제를 보면, ABCDE와 같은 피연산자는 숫자로 변환한 뒤, push해줘야 한다. 피연산자는 항상 A, B, 부터 입력되므로 array 배열에 있는 원소들을 차곡차곡 push하기 위해서는 ch-'A'만큼 빼주어야 한다. 맨 처음에 입력하는 num이 곧 array 배열의 길이기 때문에 AA+A+ 입력된다 할지라도 상관이 없다. 실수했던 점 calculate 함수의 parameter를 double로 선언하지 않았던 점. 함수(pop, pe..
[백준1918번] (C) 후위표기식 백준 1918번 착안점 각 연산자(operator)의 우선순위값을 return해주는 isOperator 함수를 만들어줬다. (, ) : 우선순위 0 +, - : 우선순위 1 *, / : 우선순위 2 피연산자 : 우선순위 -1 (즉, A, B, C) postfix함수가 가장 중요한 함수라고 할 수 있다. for문을 이용해 글자 하나하나씩 읽어나간다. 우선순위 -1 : 피연산자는 그대로 출력 열린괄호 ( : 스택에 push 닫힌괄호 ) : 스택에 있는 (를 만날 때까지 pop 우선순위 1 이상 스택이 비어있지 않고 && 스택에 있는 연산자의 우선순위가 더 높다면 pop 그외의 경우라면 스택에 push 맨 마지막에서는 스택에 남아있는 것이 없도록 모두 pop #include #include #define MA..
[C] 포인터(pointer) 간단하게 이해하기 포인터 나는 포인터가 죽어도 안 외워졌다. 나는 포인터가 죽어도 안 외워졌다. C언어의 꽃이라고 불리는 포인터를 이해하기에 조금 오랜 시간이 걸렸다. 간단하게 생각하자.일단 가볍게 짚고 넘어가자. 포인터(pointer)는 메모리 주소 '값'이다. *는 값이다. &는 주소값이다. * (asterisk) *는 별표다. 별이 붙으면 특별해진다. 군대에서도 별을 달면 대우가 달라진다. 별을 달면 값을 나타낸다. num이 가지고 있는 5를 출력하고 싶다면 ptr라는 변수에 *을 붙여서 *ptr로 나타내면 된다. 그런데, 계급장을 때면, 이 녀석(ptr)은 주소값이 된다. 정말 그런지 ptr만 출력해보자. 계급장을 떄면, ptr 변수는 주소값을 가리킨다. 정확하게 말하면, num 변수의 메모리 주소값을 가리킨다. ..