일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPA
- HTTP
- 스프링부트
- MSA
- Docker
- 트랜잭션
- 프리코스
- 미션
- 세션
- Spring Batch
- 레벨2
- CircuitBreaker
- 우테코
- REDIS
- AWS
- 자바
- 스프링 부트
- 코드리뷰
- mock
- 백준
- Level2
- 우아한테크코스
- JUnit5
- 서블릿
- 우아한세미나
- AOP
- 의존성
- Paging
- yml
- 프로그래머스
- Today
- Total
목록프로그래머스 (7)
늘
https://programmers.co.kr/learn/courses/30/lessons/1835?language=cpp 코딩테스트 연습 - 단체사진 찍기 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 programmers.co.kr 풀이 처음에는 수학문제인가 싶어서 공식을 찾으려 해봤지만 잘 찾기 어려웠다. 그래서 완탐을 해야하나 싶어서 시간복잡도를 계산해보니 8개 모두를 순열을 돌리므로 8! = 40320 *100(조건) = 4032000 약 400만밖에 안되므로 여유로웠다!😳 그래서 완탐을 돌리고 조건에 맞는것만 찾아서 카운트하는 방식으로 풀었다. 소스코드 #i..
https://programmers.co.kr/learn/courses/30/lessons/60057?language=cpp 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr Level 2 문제이다. 문제를 잘 못읽으면 해매기 쉬울 문제인것 같다. 알고리즘 풀이 과정 묶을 문자열 길이를 1개 씩 자를때, 2개 씩... 계속해서 하나하나 비교해주면 된다. input의 길이가 1000까지 이므로 for문 3번까지 돌려도 1초를 안넘기므로 시간제한은 걱정없이 하면 된다. #include #include usi..
어렵지 않았던 문제였다. 주의할 점으로는 동일한 시간대일때 트럭이 먼저 빠지고, 새로운 트럭이 들어갈 수 있다는 것이었다. 처음에 두개를 나눠서, 빠지는 데에 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
처음 풀때는 단순히 정렬 기준 2개잡고 문자열 자르고, 소문자 만들고, int형변환 해주고, 등 귀찮은 정렬문제라고 생각했다. 그래서 백준 골드5? 실버? 사이쯤 된다고 생각해서 막힘없이 풀었는데 계속 테스트1, 2만 통과되고 나머지가 안되어서 결국 질문하기를 보았는데... 원인은 일반적 sort는 unstable해서 기존의 상태가 보장되지 않는다고 합니다. 그래서 stable_sort를 써야 한다고 한다... #include #include #include #include using namespace std; vector> v; bool compare(const pair& a,const pair& b){ if(a.second.first == b.second.first){ return a.second.s..
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
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);..