일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 백준
- 자바
- 우테코
- MSA
- REDIS
- JUnit5
- 미션
- Spring Batch
- Paging
- 스프링부트
- CircuitBreaker
- 의존성
- mock
- 세션
- JPA
- HTTP
- 트랜잭션
- 프로그래머스
- 프리코스
- 서블릿
- yml
- 우아한세미나
- 우아한테크코스
- 레벨2
- 스프링 부트
- AWS
- Level2
- Docker
- AOP
- 코드리뷰
- Today
- Total
목록알고리즘_프로그래머스/기타 문제 (9)
늘

어렵지 않았던 문제였다. 주의할 점으로는 동일한 시간대일때 트럭이 먼저 빠지고, 새로운 트럭이 들어갈 수 있다는 것이었다. 처음에 두개를 나눠서, 빠지는 데에 1초 + 들어가는데 1초를 해서 어디서 오류가 발생했는지 찾느라 조금 걸렸던것 빼곤 괜찮았다 ^^ #include #include using namespace std; int currentWeight; vector carsInBridge; // 다리위에 있는 차들의 무게와 시간 int solution(int bridge_length, int weight, vector truck_weights) { int answer = 1; for (int i = 0; i < truck_weights.size(); i++) { if (!carsInBridge.em..

문제 해결 처음에 문제에서 말하는대로 push pop을 하면 시간초과가 날것같다고 생각해서 다른 방법을 찾아보다가. 그냥 한 번 해보자고 생각해서 문제그대로 적었다. 위치와 우선순위를 담는 pair를 만들어서 저장하고, 반복문을 돌면서 우선순위가 높은 문서가 나오면 pop하고 찾는 location이면 리턴을 해줬고, 그렇지 않다면 다시 그 값들을 그대로 push해줬다. #include #include #include #include using namespace std; int solution(vector priorities, int location) { int answer = 0; queue q;// location, 순위 for(int i=0; i

bfs를 이용해서 구현을 했다. level 3 치고는 단순한 bfs/dfs문제여서 당황한 느낌..? 아직 방문하지 않았다면 bfs돌면서 방문을 체크해주고, bfs가 끝나면 다시 방문 안 한 구간부터 찾아서 반복해주면 되었다. #include #include #include #include using namespace std; int visited[201]; queue q; vector v[201]; void bfs(int x, int n){ visited[x]=1; q.push(x); while(!q.empty()){ int cx = q.front(); q.pop(); for(int i=0; i

알고리즘 분류는 dfs/bfs 인 문제이다. level2문제로 전형적인 재귀 문제였다...! 바로 코드를 첨부하겠습니당 #include #include using namespace std; void dfs(vector numbers, int target, int i,int& answer, int result){ if(i == numbers.size()){ if(result == target)answer++; return; } dfs(numbers,target, i+1, answer, result+numbers[i]); dfs(numbers,target, i+1, answer, result-numbers[i]); } int solution(vector numbers, int target) { int ans..

월간 코드 챌린지가 4월달에 있었다는 것을 이제서야 알아버렸다.. 학교 과제에 치여사느라 월코챌 참여를 놓쳤지만 연습문제로 풀어보았다! 월코챌 문제를 처음 풀어 본거였지만 타 코딩대회에 비해서 난이도는 쉬운것 같다..! 단순한 스택 자료구조 문제여서 생각나는대로 풀면 금방 해결 가능이었다...! 학교 자료구조 수업이 도움이 된건가..? 쨋든 한방에 통과되어서 기분이 좋았다! #include #include using namespace std; int solution(string s) { vector v; int answer = 0; int check =1; string tmp; for(int i=0; i

level.2 문제였는데 문제를 제대로 읽지않아서 시간좀 걸렸다.. 아래가 문제인데 접두어만 보면 되었던 것이었다!!! 생각보다 쉬운걸 혼자 어렵게 생각했으니.. 대부분 비슷한 코드들 인것 같다. #include #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; sort(phone_book.begin(), phone_book.end()); for(int i=0; i

level 2였지만 쉬웠던 문제였다. 간단히 방정식만 생각하면 되었다..! (x-2)*(y-2) = yellow 2*x+2*y-4 = brown 아마 이 수식 계산하는게 복잡해서 level2인가..? 싶다..! #include #include #include using namespace std; vector solution(int brown, int yellow) { vector answer; int x, y; y= ((4+brown) + sqrt(pow(4+brown,2) - 8*(2*yellow + 2*brown)))/4; x = (yellow+brown)/y; if(x>y){ answer.push_back(x); answer.push_back(y); }else{ answer.push_back(y);..

백준 저울문제 www.acmicpc.net/problem/2437를 못풀어서 한이 맺혀서 프로그래머스 그리디 문제를 풀었다..!! 2437번: 저울 하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓 www.acmicpc.net level2 치고는 쉬운 그리디 문제였다. 덕분에 그리디 자신감도 다시 찾았다!! *그리디 여러 문제 풀어보면서 그리디는 은근 아이디어 싸움(?) 인것 같다. 난이도가 높아질수록.. #include #include #include using namespace std; int solution(vector people, int limit) { in..

요즘 그리디가 너무 안 풀리는것 같다 ㅠㅠ 마지막 A의 위치에 따라 조이스틱 좌우 방향을 결정 짓는 부분에서 오래걸렸다... 결국 블로거님을 참고하여서 경우의 수를 알았다.. 4가지 경우의 수 ▶ (): 뒷부분이 A인 경우 최소 Ex) BBBBAA이면 오른쪽으로 3번만 이동하면 됨 ◀ :앞부분이 A인 경우 최소 Ex) AAAAABBB이면 왼쪽으로 3번만 이동하면 됨 ▶◀ : 중간에 A가 많은 경우 중 앞부분에 A가 아닌 알파벳이 더 적은 경우 Ex) BBBAAAAAAAAABBBBB이면 오른쪽으로 2번, 왼쪽으로 2 + 5번. 즉, 2 * 2 + 5 = 9번만 이동하면 됨 ◀▶ : 중간에 A가 많은 경우 중 뒷부분에 A가 아닌 알파벳이 더 적은 경우 Ex) BBBBBBBAAAAAAAAABBB이면 왼쪽으로 ..