자료구조 | C++ | 벡터와 반복자
·
자료구조/C++
개요이번엔 좀 빠릿빠릿하게 써보려고 합니다. 바로 저번주에 나갔던 진도를 지금 적겠습니다.이렇게 말하면 달라진게 없는 것 같은데 '저번 주 목요일'에 나갔던 진도를 '이번 주 월요일'에 정리하는거니까 따지고보면 빠릿빠릿한거겠죠??? 사실 진도는 배열과 벡터였는데 저번 글에 이미 배열을 적었더라구요?그래서 같이 나간 벡터와 반복자를 다뤄보겠습니다.     벡터란?수학적으로도 물리적으로도 제가 했던 유니티에서도 벡터는 힘과 방향이였습니다. 근데 C++에선 C#의 List와 비슷한 자료구조 입니다.vector와 List 둘 다 크기가 유동적으로 늘어나는 특징을 가지고 있습니다.그리고 vector와 List의 데이터 할당 방식에서 vector와 list가 자신의 크기를 미리 정할 수 있게 해주는 이유를 알 수 ..
[백준] | C++ | 7785. 회사에 있는 사람
·
알고리즘/C++
개요실버2가 코앞입니다.그래서 오늘 풀 문제는 7785. 회사에 있는 사람 입니다. 문제 난이도는...실버 5입니다.저번 글까지는 실버3 문제를 풀던 내가 어째서 실버5 문제를 풀고있어야 하는지는 잘 모르겠지만 아무생각없이 하루 1번 백준 문제 풀기를 하던 중 만만해보여서 물고온 문제가 새로운 알고리즘 분류인'해시를 사용한 집합과 맵' 을 같이 갖고왔기 때문입니다.     문제상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다. 각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다. 상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회..
자료구조/게임 프로그래밍 | C++ | 함수, 포인터
·
개발/C++
개요자료구조 수업의 진도는 계속 나가는데 글을 쓰는 빈도는 점점 줄고 있습니다.주기를 조금 줄여야겠네요. 오늘 쓸 함수에 대한 글은 지난주에 진작 나갔던 진도입니다... 아이고저번주에 나간 게임 프로그래밍 시간에 나갔던 진도와 겹치는 부분이 있어서 합쳐서 정리하겠습니다.    함수란?간단하게 함수는 input을 넣으면 output이 나오는 것 이라고 할 수 있습니다. 함수들은 선언할때 반환할 자료형, 이름과 매개변수(선택)가 필요합니다.물론 반환값이 없는 void 함수도 존재합니다.int max(int x, int y){ x > y ? return x : return y; return x;} int 라는 반환형과 max라는 이름, 그리고 괄호에 들어간 매개변수를 통해 함수를 만들었습니다.정말 신기하..
게임 프로그래밍 | C++ | 랜덤
·
개발/C++
개요저희 학교에선 자료구조 시간에서 C++ 문법을 배우고 게임 프로그래밍 시간에 배운 C++ 문법을 사용해서 게임을 만듭니다.물론 아직까지 게임이라곤 숫자 야구라거나 업다운 게임이라거나 유사 검강화하기 같은 콘솔 텍스트 게임이지만요... 이번에 게임 프로그래밍 수업에서 배웠던 랜덤에 대해 적어보려고 합니다.    rand() C++에선 기본적으로 rand 함수를 제공합니다.#include using namespace std;int main(){ int randNum = rand(); cout 0~999999... 까지의 숫자를 반환하는데 다시 실행해봐도 출력은 계속해서 41로 같은값이 나옵니다. 어? 이러면 안되는거 아닌가?이러면 이게 랜덤인게 맞나요? 반쪽짜리 아닌가? rand 함수에 매개변수가 들어가..
[백준] | C++ | 9461. 파도반 수열
·
알고리즘/C++
개요 실버3 을 달았습니다 . 수학 시간에 수학적 귀납법을 배워보니 다이나믹 프로그래밍(DP)과 굉장히 유사하다는 점을 깨달았습니다. 뇌가 한단계 진화했어요! 몇몇 DP 날먹 문제를 풀어보며 감을 잡아봤는데 조금 더 심화된 DP를 풀어보고 싶었습니다. 문제의 정답 꼴은 다 비슷하겠지만 오늘 풀어볼 문제는 친구의 추천인 9461. 파도반 수열 입니다. 문제 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 길이를 k라 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. 파도반 수열 P(N)은 나선에 있는 정삼각형의 변의 길이이다. P(1)부터 P(10)까지 첫 10개 ..
자료구조 | C++ | 문자열
·
개발/C++
개요오늘은 문자열에 대해서 배웠습니다.string 클래스와 각종 메서드에 대해서 배웠는데 반복자인지 뭔지는 이해가 조금 어렵지만코드를 보면 대충은 읽을 수 있게 됐죠. C#보단 C++이 이런부분에선 확실히 편한것 같습니다.    null 종료 문자열#include using namespace std;int main(){ char c[] {'h','e','l','l','o'}; cout  hello 라는 값이 담긴 char 배열을 출력해보면  이런 이상한 한자들이 같이 출력되는걸 볼 수 있는데 이건 C++이 문자열의 끝을 인식하지 못해서 이상한 값까지 읽어들이기 때문입니다. 그렇기 때문에char c[] {'h','e','l','l','o', '\0'};'\0' 문자로 null을 명시적으로 표시해줄 수 도 ..
[백준] | C++ | 1463. 1로 만들기
·
알고리즘/C++
개요 실버 4 를 달았습니다. 실버 4 를 달면서 C++을 대충 맛봤는데 세상에 C#보다 몇배는 빠릅니다!!! 알고리즘은 C#으로 풀면 안돼요.. 저번 글은 4673. 셀프 넘버를 풀었었는데 실버 5 따리 개 쉬운 문제였더라구요. 그런 의미로 실버 4 도 달았겠다 이번 글은 1463. 1로 만들기 라는 실버 3 문제를 풀어보도록 하겠습니다. 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 문제가 짧습니다. 하지만 딱봐도 어려워 보이는군요... 알고리즘 분..
[백준] | C# | 4673. 셀프 넘버
·
알고리즘/C#
개요 필자는 백준 실버를 이 글을 쓰는 당일날 새벽에 달성했습니다. 마지막엔 실버 5 문제를 두개 풀고 승급했는데 솔직히 실버 5 문제도 너무 어려워서 중간에 껴있는 1193. 분수찾기, 1427. 소트인사이드 같은 날먹 문제만 빠르게 먹고 올라왔습니다. 저에겐 아직 실버 문제도 어렵기 때문에 지금부터 풀 실버 5 문제 중 제 맘에 드는걸 풀어서 올리려고 합니다. 아직 쫄보인 저에게 solved.ac에서 푼 사람수로 내림차 순 정렬했을때 가장 위에있던 문제인 4673. 셀프 넘버 문제가 눈에 들어왔습니다. 문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7..