본문 바로가기

cpp450

[백준] 4949번: 균형잡힌 세상 (C++) 4949번: 균형잡힌 세상 문제 ) 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. - 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. - 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. - 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. - 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. -.. 2022. 6. 21.
[Cpp] 함수 호출 방식 (Call by value, Call by reference) 개인 공부 후 자료를 남겨놓기 위한 목적이므로, 내용상의 오류가 있을 수 있음을 알립니다. 함수 호출 방식 Cpp에서는 인자를 함수에 넘겨주는 방식에는 크게 두 가지가 있다. 바로 Call by value, Call by reference 이다. 이중 Call by reference에 대해 더 집중하여 다루어 보도록 하겠다. Call by value 함수에서 값을 복사해서 전달하는 방식으로 인자로 전달되는 변수를 함수의 매개변수에 복사하게 된다. 이러한 Call by value 방식은 인자로 전달한 변수와는 완전히 별개의 변수가 되기 때문에 간단히 말해, 매개 변수를 변경해도 원래의 변수에는 영향을 미치지 않는다. ( 원본 값을 바꿀 필요가 없는 경우 사용한다.) 예시 코드 1 2 3 4 5 6 7 8 .. 2022. 6. 20.
[Cpp] 포인터 기본 포인터란? 포인터는 어떠한 값을 저장하는 게 아닌 메모리 주소를 저장하는 변수이다. 쉽게 말해, 각각의 변수는 저마다의 메모리 주소값을 가지고 있고, 이를 가리키는 것이 "포인터"이다. 이 포인터는 3가지를 알고가면 좋다. 1) 포인터는 주소를 저장하는 변수이다. 2) 주소를 저장하고 있을 때, 이를 "가리킨다" 라고 표현한다. 3) *을 붙이면 이는 가리킨 곳의 값을 나타낸다. (원격으로 접근이 가능) 간단한 예제 몇가지를 통해 포인터를 이해해보자. 다음과 같은 변수와 값이 있다. char t에 'A'가 할당되어 있고, int r에는 15가 할당되어 있다. 이를 포인터 변수인 g와 v에 각각 할당하려고 하면 코드로는 다음과 같이 나타낼 수 있다. 이 포인터 변수 *g, *v는 각각 t와 r을 "가리키는.. 2022. 6. 20.
[백준] 9012번: 괄호 (C++) 9012번: 괄호 문제 ) 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으.. 2022. 5. 8.