목록2025/04 (14)
Mini

https://www.acmicpc.net/problem/2156* 풀이1. 완전탐색으로 시도 i번째 포도주를 먹는다 안먹는다.문제 : 연속3번은 안된다는것을 어떻게 검사하지?비트? -> n=10000개 의비트 -> 불가능cnt변수? (연속으로 선택한 포도주 갯수) -> 트리에서 O로 갈때 1씩 증가시키기!상태 : (idx, cnt) 값 : 그 상태일때, 최대값* 전체코드#includeusing namespace std; typedef long long ll;ll n;ll dp[10004][4];ll arr[10004];//인덱스, 연속선택카운트ll dfs(int idx, int cnt) { if(cnt>=3) { return -987654321; //배제 } if(i..

https://www.acmicpc.net/problem/1480* 시도1N이작다? -> 조합이 여러번?(이 보석은 저가방에 넣고 ... 저 보석은 저가방에...) -> 비트마스크?무게작은순으로 정렬하면 되나?(그리디?) * 풀이그리디보다는 무식하게 완탐으로 시작할것.보석의 idx가 아닌, 가방의 상태들로 dfs 실행.상태를 생각해보자.[가방idx][남은용량][현재까지담은 보석의 집합]포인트는 가방기준 dfs, 현재까지담은 보석의 집합을 상태로 두는 것이다.현재가방에 보석을 담는다 or 안담는다로 완탐. & 메모보석은 for문으로 dfs내에서 완탐 필요.#includeusing namespace std; typedef long long ll;ll n,m,c;ll a[24];ll dp[14][24][1=..

문제상황jpashop의 배포환경에서 상품목록 페이지에 들어간후 수정버튼을 클릭하니 500error 가 발생하였다.배포서버의 로그(output.log)를 확인해보니 아래와 같았다.Hibernate: select item0_.item_id as item_id2_3_0_, item0_.name as name3_3_0_, item0_.price as price4_3_0_, item0_.stock_quantity as stock_qu5_3_0_, item0_.artist as artist6_3_0_, item0_.etc as etc7_3_0_, item0_.author as author8_3_0_, item..

문제상황어느부분에서 병목이 발생하는지, 그리고 어떤 부분에서 예외가 발생하는지를 로그를 통해 확인하기 위해 아래 요구사항에 맞춰 로그 추적기를 만들던 도중 문제가 발생했습니다.요구사항 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력 애플리케이션의 흐름을 변경하면 안됨 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨 메서드 호출에 걸린 시간 정상 흐름과 예외 흐름 구분 예외 발생시 예외 정보가 남아야 함 메서드 호출의 깊이 표현 HTTP 요청을 구분 HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야 함 트랜잭션 ID (DB 트랜잭션X), 여기서는 하나의 HTTP 요청이 시작해서 끝날 때 까지를 하나의 트랜잭션이 라 함작동예시정상..

웹 에러인경우 문제상황없는경로로 접근시 웹사이트가 망한것 같은 에러페이지가 등장합니다.이를 개선해고자 합니다.해결방법간단히 아래경로에 html 파일을 추가해 주시만 하면 됩니다.에러발생시 전체 흐름은 아래와 같습니다.1. WAS(/error-ex, dispatchType=REQUEST) -> 필터 -> 서블릿 -> 인터셉터 -> 컨트롤러 2. WAS(여기까지 전파) 3. WAS 오류 페이지 확인 4. WAS(/error, dispatchType=ERROR) -> 필터(x) -> 서블릿 -> 인터셉터(x) -> 컨트롤러(/error/500) ->View이때, WAS까지 오류가 전달되면 WAS는 다시 /error 경로로 서버에 요청을 한다는 점이 키포인트 입니다.관련 스프링 코드를 보겠습니다.BasicErr..

https://www.acmicpc.net/problem/14863* 풀이cnt#includeusing namespace std; typedef long long ll;struct A { int a,b,c,d;};int n,k,ret;ll dp[104][100000+4]; //(idx, num) : 그떄 경우의수vector v;ll dfs(int idx, int cnt) { if(cnt >n>>k; for(int i=0;i>a>>b>>c>>d; v.push_back({a,b,c,d}); } cout ret 초기화 문제처음풀이는 ret=0 -> 오답결론 : ret는 불가능 && 매우 큰값으로 초기화 하라!

https://www.acmicpc.net/problem/5557* 풀이+ , - 2가지 경우의수완탐 -> 2^100 -> 불가dp?#includeusing namespace std; typedef long long ll;int n;int arr[104];ll dp[104][24]; //(idx, num) : 그떄 경우의수ll dfs(int idx, int num) { if(num 20) { return 0; } if(idx==n-1) { if(num==arr[idx]) { // cout>n; for(int i=0;i>arr[i]; } // cout시행착오마지막 숫자와 같은지 검사, 마지막숫자도 더하거나 빼는것이 ..

https://www.acmicpc.net/problem/14867*시도1dfs로 6가지 경우의수 탐색 -> 계속 fill A 만 호출되다 스택 오버플로우* 풀이가중치가 같은 최단거리는 ? bfs! 처음 찾은게 최단거리 보장but, 상태 : [a의 물][b의물] = [10만][10만] -> 메모리 초과상태관찰 -> 상태가 띄엄띄엄 있음 -> 즉, vis를 전부사용하지 않아도됨 -> map을 vis로 활용#includeusing namespace std; typedef long long ll;int a,b,c,d,ret=-1;map,int> vis;struct A { int q,w,cnt;};int main() { ios_base::sync_with_stdio(0); cin.tie(0); ..