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..
😙 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/150369# [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/150369#) 🌸 해결 과정 deliveries와 pickups 배열의 마지막 부분부터 접근하여, cap 만큼의 짐을 배달하고 수거하는 것을 반복하였다. 이 때 무작정 cap 크기의 짐을 실고 가게 되면, 다 배달하지 못하여 돌아올 때 회수할 수 있는 택배의 개수가 줄어들..
🐹 문제 설명 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..
https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🧐문제 설명 문제에서 banned_id라는 배열로 주어진 아이디의 목록을 분석해, 제재 아이디를 만드는 경우의 수를 구하는 문제이다. ⭐ 해결 과정 나는 이 문제를 중복 set을 이용해 풀었다. 예제 입력 2번을 이용해 설명해보자면, graph를 만들듯이 각 banned_id에 포함되는 user_id들을 찾아 이차원 배열 candidiates에 넣어주었다. 그 다음, 재귀함수를 사용해 candid..
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)이라면 회전할 수..
https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문자열을 파싱하여 다트 게임에서의 점수를 구하는 문제이다. 해결 과정 (1) 점수는 최대 10까지 있으므로 while문을 돌려 점수를 구해 score 변수에 저장하였다 . (2) 다음 인덱스에 접근해 보너스가 S, D, T인지에 따라 score의 값을 늘려주었다. (3) 다음 위치가 정수라면 옵션이 없는 것이므로 패스하고, 정수가 아니라면 *, #인지 여부를 파악해 점수를 수정하였다. ..
😎 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 단순했다. 문자열로 주어진 수식을 계산하되, 연산자의 우선순위를 임의로 지정해 최댓값을 구하도록 하는 문제였다. 이때 수식을 계산한 값은 절댓값으로 비교하고, 최종 결괏값이 2의 63승 미만으로 나오기 때문에 long long 타입을 적극적으로 활용해야하는 문제였다. 💗 해결 과정 수식에는 최대 3개의 연산자가 주어져있고, 이 연산자의 우선순위를 정해서 Brute-force ..
😊문제 설명 해결 방법이 쉽사리 떠오르지 않는 구현 문제였다. 문자열 형태로 주어진 숫자 입력 중 K개를 제거하여 만든 문자열이 최대가 되도록 한다. 🐹 코드 설명 먼저, 큰 숫자를 만들기 위해서는 앞쪽의 숫자들 중 제거할 수 있는 것을 최대한 제거하여 제일 앞의 숫자를 큰 숫자로 만들어야 한다. 이때 제거할 수 있는 갯수는 정해져있으므로, 이 숫자를 제거할 지 말 지 앞으로 더 제거할 수 있는 갯수(K)를 기반으로 결정하면 된다. 4177252841라는 예제입력으로 설명해보겠다. 4 입장에서, 자신을 없애지 않으면 뒤의 네 가지 숫자를 없앨 수 있다. (K = 4) 뒤의 네 가지 숫자는 1, 7, 7, 2이다. 이 중에서 7은 4보다 크며, 7을 제거하는 것보다 4를 제거하는 것이 더 좋은 선택이다. ..
😎 문제 설명 😀 풀이 과정 후보키를 고르는 모든 조합을 비트마스크 집합을 이용하여 표현하였다. 아무것도 고르지 않는 i = 0를 제외한 모든 조합을 for문을 이용해 순회하며, 유일성과 최소성을 검사하여 사용이 가능한 후보키라면 답에 추가해주었다. 비트마스크의 원소 하나하나는 최대 8개의 Attribute의 집합을 표현하고 있고, 원소가 1이면 후보키, 0이면 후보키가 아닌 것으로 가정하였다. 어떻게 유일성을 검사하나요 ? i번, j번 Attribute가 후보키라고 가정하자. 모든 튜플의 i번, j번 속성에 해당하는 문자열을 이어붙인다. 그 결괏값 중에 중복되는 문자열이 하나라도 있으면 (i, j)는 후보키가 될 수 없다. 예를 들어서, ["이름", "전공"]을 후보키로 한 경우에 예제 입력에 주어진 ..