c++

Algorithm/Baekjoon

[BOJ/C++] 백준 2151 - 거울 설치

👻 문제 설명 BFS문제이지만, 인접한 칸으로 이동하는 기존 문제와 다르게 90도로 이동해야 하는 점 + 거울을 설치할 수 있는 곳까지 연속으로 쭉 이동해야하는 점이 달랐습니다. 이 점을 유의해서 BFS 코드를 조금 고쳐서 풀어보았습니다 : ) 😔 해결 과정 편의 상, 시작점 (#)에서 도착점(#) 까지 '빛이 이동한다'라고 표현하겠습니다. BFS를 수행하는 목적은, 빛이 시작점에서 도착점까지 이동하였을 때 '거울이 최소 몇 번 사용되느냐' 입니다. 이 말은 즉, '빛이 최소 몇 번 꺾이느냐'를 의미합니다. 따라서 거울을 놓을 수 있는 모든 위치에 대해서, 빛이 꺾일 수 있는 다음 위치를 모두 찾아 이동하는 것을 시뮬레이션하고 도착점(#)에 도달하였을 때 사용한 거울의 최솟값을 구하면 됩니다. 이 때 유..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 문자열 압축

https://school.programmers.co.kr/learn/courses/30/lessons/60057# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 👻 문제 설명 😔 해결 과정 문자열을 자를 수 있는 단위는 최소 1에서 최대 s의 길이의 절반이다. 모든 경우를 탐색하면서, 문자열 압축을 하였을 때 가장 짧은 길이를 찾는 방식으로 문제를 풀었다. "abcabcabcdede" 의 문자열이 주어졌을 때, x = 3 즉 3개 단위로 자르는 경우를 예제를 들어보겠다. string target = s.substr(i, x); int k = 0; whi..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 메뉴 리뉴얼

🐹 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 😊 해결 과정 1. 주문된 모든 메뉴 조합 orders에 대해서, 코스요리 메뉴로 선정 가능한 후보를 모두 뽑는다. void findCombination(string order, int index, string& result, set& combinations) { if (index == order.size()) { if (result.size() >= 2){ set s; for(ch..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv3 - 블록 이동하기

https://school.programmers.co.kr/learn/courses/30/lessons/60063 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 school.programmers.co.kr 문제 설명 이렇게 board가 주어져 있다면, 빈칸 (0)에서만 로봇을 움직여 (n -1, m -1) 로 가야한다. 갈 수 있는 모든 경우의 수에서 최단 시간을 구하면 된다. 일반적인 BFS 문제와 다르게 로봇은 두 칸을 차지하고, 회전이 가능하다는 점이 특징이었다. 로봇은 어느 방향으로든 90도 회전이 가능하나, 이동하는 방향의 대각선 칸이 벽(1)이라면 회전할 수..

Algorithm/Programmers

[PG/C++] 프로그래머스 Lv2 - 후보키

😎 문제 설명 😀 풀이 과정 후보키를 고르는 모든 조합을 비트마스크 집합을 이용하여 표현하였다. 아무것도 고르지 않는 i = 0를 제외한 모든 조합을 for문을 이용해 순회하며, 유일성과 최소성을 검사하여 사용이 가능한 후보키라면 답에 추가해주었다. 비트마스크의 원소 하나하나는 최대 8개의 Attribute의 집합을 표현하고 있고, 원소가 1이면 후보키, 0이면 후보키가 아닌 것으로 가정하였다. 어떻게 유일성을 검사하나요 ? i번, j번 Attribute가 후보키라고 가정하자. 모든 튜플의 i번, j번 속성에 해당하는 문자열을 이어붙인다. 그 결괏값 중에 중복되는 문자열이 하나라도 있으면 (i, j)는 후보키가 될 수 없다. 예를 들어서, ["이름", "전공"]을 후보키로 한 경우에 예제 입력에 주어진 ..

Algorithm/Baekjoon

[Algorithm] 16936 나3곱2 C++ 문제 해결 과정

www.acmicpc.net 시간 초과를 조심하자 ! #include #include #include using namespace std; int main() { int n; cin >> n; vector B(n); for (int i = 0; i > B[i]; sort(B.begin(), B.end()); do { long long value= B[0]; bool flag = true; for (int i = 1; i < n; i++) { // 나3곱2의 경우가 아니면 if (!(B[i] == value * 2 || (B[i] == value / 3 && value % 3 == 0))) { flag = false; break; } value = B[i]; } if (flag)..

Major Study/Object Oriented Programming

객체지향 프로그래밍 프로젝트 (상속과 다형성, 가상함수) 해결 과정 / 가상 함수, 다형성 개념 정리

driver 파일 코드 설계는 다음과 같이 했다. #include using namespace std; #include #include "Shape.h" int main() { vector handle; // 핸들이 될 기본 클래스 포인터 자료형의 벡터 생성 handle[0] = new Circle; // 원 handle[1] = new Square; // 사각형 handle[2] = new Sphere; // 구면체 handle[3] = new Cube; // 정육면체 for (int i = 0; i < 4; i++) // handle 내의 도형을 처리하는 루프 { /* * if(handle[i]의 객체가 TwoDimesionalShape클래스의 파생 클래스 객체이면) cout

MINGYUM
'c++' 태그의 글 목록