https://programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 records가 문자열로 주어졌기 때문에 어렵게 느낄 수 있다. 그래서 reco라는 이중벡터를 만들어 시간, 차량번호, INOUT을 따로 넣어줬다. 차량 번호가 key이고 시간이 value인 map을 만든다. IN일 때는 map에 값을 넣어주고, OUT일 때는 현재 시각과 처음 들어온 시각을 빼준다. 그리고 출차 표시를 해주기 위해 map에서 그 차량번호는 지워준다. 그럼에도 불구하고 map에 남아..
level2
https://programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 문자열을 정렬했을 때, 어떻게 정렬되는지 잘 확인해야 한다. 예를 들어 119, 97674223, 1195524421이라면 119, 1195524421, 97674223으로 정렬된다. 그래서 반복문을 돌려 앞뒤로만 접두어가 있는지 확인해주면 된다. #include #include #include using namespace std; bool solution(vector phone_book) { bo..
https://programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 ) 일 때 스택이 비어있거나, top이 (이 아니라면 올바르지 않은 괄호이다. 또한, 반복문을 다 돌았을 때 스택에 남아있는 것들이 있다면 올바르지 않은 괄호이다. 풀이 1 #include #include using namespace std; bool solution(string s) { bool answer = true; stack st; for(int i = 0; i < s.size(); i++..
https://programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 처음에는 단순히 1행에서 가장 큰 값 더하고, 그 열을 제외한 2행에서 가장 큰 값 더하고... 이런 식으로 풀었었다. 그러나, 이렇게 풀면 아래와 같은 예외 케이스가 존재했다. 그래서 이 문제는 dp로 해결해야 한다. 0열일 때는 전 행에서 0열을 제외한 1, 2, 3열에서 가장 큰 값 1열일 때는 전 행에서 1열을 제외한 0, 2, 3열에서 가장 큰 값 2열일 때는 전 행에서 2열을 제외한 0,..
https://programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 이 문제는 큐를 활용하는 문제이다. 각 기능들이 며칠째에 배포가 가능한지 큐에 넣는다. 그리고 만약 현재값보다 나중값이 더 작다면 같이 배포할 수 있기 때문에 반복문을 돌려 몇개까지 배포할 수 있는지 res를 카운트 해준다. 풀이1 #include #include #include using namespace std; vector solution(vector progresses, vector spee..
https://programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 이 문제는 구조체 벡터를 만들고, 그 벡터를 구조체의 조건에 따라 정렬 함수를 만드는 게 중요하다. head와 number 부분은 중요하지만, tail부분은 index로 대체할 수 있다. head와 number 부분을 찾는 방법은 숫자가 나올 때 idx벡터에 넣고, 0부터 idx[0]까지는 head, idx[0]부터 idx[0] + idx.size()까지는 number이다. 그 다음 구조체를 만들어..
https://programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 이 문제는 대각선으로 잘린 사각형에 패턴을 찾을 수 있다. 동일한 패턴이 W와 H의 최대공약수만큼 반복된다. 하나의 직사각형을 보면 가로를 X, 세로를 Y라고 했을 때 패턴이 최대공약수만큼 반복되므로 X와 Y는 W와 H를 최대공약수로 나눈 것과 같다. 하나의 패턴에서 대각선으로 잘라지는 사각형의 개수는 X + Y - 1이다. 따라서 (W / 최대공약수 + H / 최대공약수 - 1) * 최대공약수가 ..
https://programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 이 문제는 구현만 잘하면 간단한 문제이다. 일단 주어진 벡터가 string형으로 되어있으므로, char 이중배열에 반복문을 돌려 넣어준다. 그리고 사람(P)의 수를 세고, bfs문을 돌려 true 횟수가 사람의 횟수와 같으면 다 거리두기를 잘 지키고 있다는 뜻이다. bfs 함수에서 문제에선 거리가 2이하인데, 3이하로 설정한 이유는 처음에 움직이지 않았는데 dist를 1로 설정해주었기 때문이다. 0..
https://programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 최대공약수와 최소공배수의 기초 문제이다. 여러 개의 최소공배수를 구하려면 두 개의 최소공배수를 구한 것에 다음 수를 넣으면 된다. #include #include using namespace std; int gcd(int a, int b){ while(b != 0){ int r = a % b; a = b; b = r; } return a; } int lcm(int a, int b){ return a..
https://programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 과정 다이나믹 프로그래밍의 기초 문제이다. 앞의 두 수를 더해주고, 1234567로 나눈 나머지의 값을 리턴하면 된다. #include #include using namespace std; int dp[100001]; int fibo(int n){ dp[0] = 0; dp[1] = 1; for(int i = 2; i