본문 바로가기

Programming175

[프로그래머스 Lv.2] 게임 맵 최단거리 / c++ [출처] https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ▷▷ 문제 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5) 위치에 있는 경우의 예시.. 2022. 8. 29.
DFS와 BFS : (2) 구현하기 1.  DFS 구현1-1.  DFS 과정더이상 이어진 유효 노드가 없는 절벽 끝까지 쭉 탐색한다. 이때, 절벽 끝에 도달하고 나면, 스택에서 하나씩 다시 버리면서 왔던 길을 돌아가서 다른 길로 접어든다. 이후 탐색 반복  1-2.  DFS 구현 코드1)  재귀함수 이용#include #include #include #include using namespace std;void dfs(int start, vector graph[], bool check[]) { check[start] = true; while(!st.empty()) { int current = st.top(); // 가장 최근에 스택 들어와있던 노드 current st.pop(); .. 2022. 8. 28.
DFS와 BFS : (1) 기초 1. DFS, BFS ?그래프란, 정점(node)과 간선(edge)로 이루어진 자료구조이다. 이때, 우리는 그래프를 탐색함으로써 모든 정점을 한번씩 방문할 수 있다.이러한 그래프 탐색 방법에는 깊이 우선 탐색과 너비 우선 탐색이 있다.  DFS (Depth-First Search)BFS (Breadth-First Search)깊이 우선 탐색너비 우선 탐색위 → 아래로 최대한 많이 내려간 다음, 더 이상 갈 수 없을 때 옆으로 이동왼쪽 → 오른쪽으로 최대한 많이 옆으로 간 다음, 더 이상 갈 수 없을 때 아래로 이동스택 or 재귀함수  +  노드 방문 여부 배열큐 +  노드 방문 여부 배열BFS보다 간단하지만, 탐색 속도 느림DFS보다 복잡하지만, 탐색 속도 빠름   2.  DFS, BFS  활용 가능한 .. 2022. 8. 28.
[배리어프리] #10 계획심사 합격 2022.08.23.화 와!!!!!!! 우리팀 니모가 계획심사에 최종 합격하였다!!!!! 여행갔던 강릉에서 아침에 결과를 확인하고 정말정말 행복했다. 우리가 기획한 어플, 피싱백신이 드디어 그 필요성을 인정받고, 실제로 구현될 자격을 얻었다. 나 역시도 팀원들과 협업하고 멘토님께 배우며 성장할 기회를 얻었다. 제작지원금 400만원도 지원된다고 한다. 소중한 기회가 주어진 만큼, 열심히 배워서 빛나는 경험으로 만들 것이다. 화이팅 !! 2022. 8. 24.
[배리어프리] #09. 계획 심사 2022.08.19 드디어 최종 선정 11팀을 선발하는 계획 심사 발표날이었다. 엄청나게 떨렸던 저번 면접 심사보다 뭔가 더 차분한 마음이었다. 원래 노량진 스터디룸에서 팀원들과 같이 발표를 하려고 했었는데, 카드가 없어져서 지하철역에서 멘붕이 왔다.. 현금이 없었고, 허둥지둥대다가 시간이 많이 흘러버렸다. 이대로라면 간당간당히 발표 시작 전에 도착할 지경이었다ㅜㅜ 그래서 일단 다시 집으로 돌아와서 당황한 마음을 다잡고 발표준비를 했다. 이해해준 팀원들에게 너무 미안하고 고마웠다ㅠㅠ (으아.. 전적으로 비상용 현금이 없었던 내 잘못이다. 온라인 면접이라 천만다행) 발표는 체감상 순식간에 진행되었다ㅋㅋ 이번 계획 발표에서는 우리 서비스의 필요성 + 기능 구체화 + 제작계획에 초점을 팍팍 맞춰서 준비했다. .. 2022. 8. 20.
[C++ 기초] 템플릿 1. 템플릿 1-1. 템플릿이란 ? 인스턴스를 생성하기 위한 틀은 클래스! 이와 유사하게, 함수나 클래스를 생성하기 위한 틀이 템플릿 이때, 템플릿은 모든 타입을 대변하는 T 타입을 이용해서 선언되는데, 덕분에 T 자리에 어떤 타입이 들어오는지에 따라 다양한 함수, 클래스를 생성할 수 있다. 🔔 제네릭(Generic) 프로그래밍 이처럼 일반화된 틀(템플릿)에 다양한 인자를 전달함으로써 여러가지 함수, 클래스를 만드는 프로그래밍 💥 템플릿 인스턴스화 (구체화) 정의된 템플릿에 구체적인 데이터 타입을 가진 인자를 전달함으로써 실제 함수, 클래스를 생성하는 과정 1-2. 템플릿의 종류 (1) 클래스 템플릿 (2) 함수 템플릿 1-3. 템플릿 선언 방법 template template 2. 함수 템플릿 2-1... 2022. 8. 18.
[C++ 기초] 오버로딩 1. 오버로딩 vs. 오버라이딩 오버로딩 (overloading) 오버라이딩 (overriding) 개념 동일한 이름의 함수를 중복 정의 상속 받은 함수를 재정의 제한 조건 1. 메소드명 동일 2. 메소드 원형이 하나 이상 달라야 함 3. 메소드 리턴 타입 동일 여부 상관 X 1. 메소드명 동일 2. 메소드 원형 모두 동일 3. 메소드 리턴 타입 동일 * 메소드 원형 : parameter 개수, 자료형 2. 오버로딩 2-1. 오버로딩이란 ? 오버로딩이란 동일한 이름의 함수를 중복 정의한다는 개념이다. 컴파일러는 사용된 함수의 매개변수 개수나 자료형을 구분하여 자동으로 어떤 함수를 호출해야 하는지 결정한다. 따라서 오버로딩은 하나의 함수에 여러 형태를 부여하는 다형성(polymorphism)을 갖는다. #.. 2022. 8. 11.
[C++ 기초] 상속 1. 상속 상속이란 객체 지향 프로그램의 한 특성으로, 부모 클래스의 멤버 변수 / 멤버 함수를 그대로 자식 클래스가 물려받아서 재사용한다는 개념이다. * 부모 클래스 = 슈퍼 클래스 = base class 자식 클래스 = 서브 클래스 = derived class 1-1. 상속의 효과 ① 경제성 : 불필요한 코드의 중복을 제거 ② 편의성 : 유지, 보수에 유리함 1-2. 상속 형식 class Base명 { }; class Derived명 : [접근제어자] Base명 { }; 1-3. 접근 제어자와 상속 public protected private 모든 함수에서 접근 가능 (클래스 내/외) 클래스 내 모든 멤버 함수와 이 클래스를 상속받는 자녀 클래스의 멤버 함수에서 접근 가능 클래스 내 모든 멤버 함수에.. 2022. 8. 3.
[C++ 기초] 클래스 1. 클래스란 ? 클래스는 멤버 변수와 멤버 함수를 묶어서 저장할 수 있는 틀, 단위이다. 1-1. 클래스 vs. 구조체 C C++ 구조체가 포함 가능한 것 멤버 변수 멤버 변수 멤버 함수 C와 달리 C++의 구조체는 멤버 변수 뿐만 아니라 멤버 함수 또한 포함할 수 있는데, 이러한 점에서 C++의 클래스는 구조체의 상위 호환으로 설명된다. (구조체와 거의 동일한 개념!) Property : 클래스 내부 멤버 변수 Method : 클래스 내부 멤버 함수 다만, C++에서 클래스와 구조체는 기본 접근 제어자에서 차이를 보인다. C++ 구조체 : 기본 접근 제어자 public C++ 클래스 : 기본 접근 제어자 private 1-2. 클래스 vs. 인스턴스 클래스 인스턴스 (=객체) 인스턴스를 만들기 위한 .. 2022. 8. 3.