본문 바로가기

분류 전체보기270

프로그래머스 삼각형 출력하기 문제 : printTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요printTriangle이 return하는 String은 개행문자('\n')로 끝나야 합니다. 높이가 3일때 ******높이가 5일때 *************** 단지 별찍기에만 신경을 써서 문제의 조건대로 풀지 않았었다. 답을 유추하는 방법은 여러가지가 있지만 조건에 맞게 답을 내는 것도 하나의 방법이라고 생각된다. 2018. 4. 23.
프로그래머스 피보나치 수 알고리즘 문제는 한번 풀었다고 해서 끝난게 아니고, 실행시간이나 로직들의 최소화에 따라 달라지기 때문에 계속 반복해서 풀어야 할필요성을 느끼게 되었다.그래서 여태 풀어서 블로그에 올렸던 알고리즘들을 완벽히 할 때 까지 반복하려고 한다. - 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 처음에는 재귀함수를 사용해서 문제를 풀었다. 하지만 재귀함수로 할 경우 값이 커짐에 따라 실행시간이 오래 걸려 오답처리가 되었다그래서 반복문을 사용해서 다시 풀었다. 2018. 4. 23.
포인터 정리 포인터는 반드시 집고 넘어가야 하는 부분이라 생각한다. 프로그램에서 사용한 변수들은 프로그램이 실행되었을 때 고유한 메모리 주소값을 가지게 된다. 따라서 특정 변수를 사용할 때 변수명을 사용하지 않더라도 해당변수의 주소값을 알고 있으면 해당 변수에 접근할 수 있다. 포인터를 사용하는 이유 : 변수의 메모리상 주소는 상수값이기 때문에 일반 변수도 주소값을 저장할 수 있다. 하지만 일반 변수는 주소를 값으로만 다루기 때문에 저장된 주소를 사용해 해당 주소에 존재하는 데이터를 참조하거나 변경할 수 없다. 그래서 c/c++에서 포인터라는 변수를 제공하여 저장된 주소를 참조하거나 변경할 수 있는 기능을 부여한다. 포인터 사용법 - 자신이 사용하고자 하는 변수명 앞에 "*" 를 붙여준다. - & 주소 연산자 - &.. 2018. 3. 14.
할당 연산자 new 해제 연산자 delete new 연산자 자바에서는 new 연산자를 객체를 생성할 때 주로 사용한다. c언어에서의 동적할당은 malloc함수를 사용한다 c++ 에서는 new 연산자는 주로 동적 메모리를 할당할 때 주로 사용한다. 사용할 자료의 크기를 미리 알 수 있다면 정적 할당이 편하다. 하지만 얼마나 필요한지 모를 때가 더 많다. 이러한 문제를 해결하기 위해 동적 메모리 할당을 한다. 자료형의 포인터 변수 = new 자료형[배열갯수]; 로 사용한다. 또한 이렇게 동적으로 할당된 메모리는 자동으로 없어지지 않기 때문에 프로그래머가 지워줘야 한다. 지울 때 사용하는 명령어가 delete이며 단일 메모리일 경우 : delete 변수명; 배열 메모리일 경우 : delete [] 변수명; 의 형태로 사용한다. 왜 동적 배열은 delet.. 2018. 3. 13.
구조체 c/c++ 에서 구조화된 데이터를 처리할 때 구조체를 사용한다.예를 들어 사람은 기본적으로 이름, 나이, 성별을 가진다. 이를 구조화로 나타내면 먼저 구조체의 네이밍 기법을 보면 1. 구조체 이름은 클래스명과 구분하기 위해 전부 대문자로 기입한다. 2. 구조체나 클래스 안에 있는 변수들은 멤버변수라고 하며 로컬 변수들과 구분하기 위해 앞에 "m_"를 붙여준다. 원활한 협업과 가독성을 위해 지키는 것이 좋다.정의한 구조체에 대해 사용하려면 구조체를 사용함으로써 age1, age2, age3 등 과같이 변수를 여러개 사용하지 않아도 된다.또한 구조체를 배열로 선언하여 사용할 수 있다. 위와 같이 5명의 사람을 선언하고 반복문을 통해서 간단하게 구현 할 수도 있다.또한 배열로 선언했을시 인덱스당 메모리 크기는.. 2018. 3. 13.
C++ 범위 지정 연산자, ->기호, const 키워드 책의 예제를 따라하는 도중 C++의 문법이 기억나지 않아 막히는 경우가 많아 C++을 정리해가면서 봐야겠다. 범위지정 연산자(Scope Operator) :: 범위지정 연산자를 사용하는 곳은 1. classname:: 2. namespaceName:: 3. :: 이렇게 세가지가 있다. 2번 namespace = 영역구분을 말한다. 예를 들어 여러 사람이 코딩을 해서 변수나 클래스 이름이 같을 경우 namespace라는 키워드를 주어 영역을 구분한다. 3번 ::은 현재 존재하는 모든 전역함수, 전역변수들을 지역변수와 구분지어 사용한다. c++에서 -> 기호의 의미 : 포인터 변수의 값을 참조하기 위한 연산자 라는 구조체를 struct A *B와 같이 포인터로 선언하면 B가 포인터이기 때문에 B->a라고 해.. 2018. 3. 13.