목록전체 글 (1153)
개인사
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW5jBWLq7jwDFATQ SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 오랜만의 알고리즘 전역 변수없음 함수없음 문제풀이변수 tc를 정의하고 테스트케이스의 개수를 입력 받는다.1~tc를 순회하는 for문을 개행한다.변수 k, d를 정의하고, k값을 입력 받는다.스택 s를 초기화 하고, long long타입 변수 sum을 0으로 초기화한다.k번의 while루프를 수행하고, 매 루프마다 d값을 입력 받는다.d가 0이라면 sum에서 s의 top요소를 빼주고, s를 po..
개요프로덕션 중인 모바일 게임에서 "접속이 안 된다"는 제보를 받았다. 서버 로그를 열었는데 ERROR가 한 줄도 없었다. 컨테이너는 전부 살아 있고, health는 200을 내려주고, 해당 계정도 정상 상태였다. 그런데 유저 화면에는 "서버에 연결하지 못했어요"만 떠 있었다.이 글은 그 추적 과정을 남긴 기록이다. 원인은 아직 확정되지 않았다. 유력한 가설까지는 좁혔지만 마지막 검증 한 조각이 비어 있고, 오히려 뒤늦게 들어온 관측이 가설을 흔들고 있는 상태다. 결론이 나온 뒤에 정리하려다가, 이 과정 자체가 남길 가치가 있다고 판단해 미결 상태 그대로 적는다. 증상제보자가 보낸 화면은 두 장이었다.첫 화면: 스피너와 함께 "인증 중..."다음 화면: "서버에 재연결 중... (3/3)"마지막: "연..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWtInr3auH0DFASy SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com매우 쉬운 문제 전역 변수t : 테스트 케이스의 개수를 저장할 변수n : 약수의 개수를 저장할 변수d : 주어진 약수를 저장할 변수 함수없음 문제풀이t값을 입력 받고, t번의 테스트케이스를 수행한다.매 테스트케이스마다 변수 n값을 입력 받고, 변수 mn을 100만 이상, mx를 2이하로 초기화한다.n개의 약수를 d에 입력 받아, d가 mn보다 작다면 mn을 d로 갱신, d가 mx보다 크다면 mx를..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYe7x0DKBJADFARP SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.comD4 난이도 정도는 아닌 것 같다. 전역 변수t : 테스트 케이스의 개수를 저장할 변수s : 매 테스트 케이스마다 주어질 문자열을 저장할 변수 함수없음 문제풀이t값을 입력 받고, t번의 테스트 케이스를 수행한다.매 테스트 케이스마다 s에 문자열을 입력 받고, 변수 len을 s의 크기로, mn을 매우 큰 값으로 초기화한다.정수형 pair벡터인 splits를 초기화 하고, 1부터 len까지 순회하는 ..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZelvp3qmdDHBISV SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com오랜만에 푸는 알고리즘이라 간단한 완전 탐색 문제를 선택하였다. 전역 변수N : 배열의 최대 크기를 정의할 상수 변수t : 테스트케이스 개수를 저장할 변수n : 좌표 개수를 저장할 변수pos : 좌표 정보를 저장할 배열mn_dist : 최소 거리를 저장할 변수 함수1. Sumulationint Simulation( int vanish ){ int cur_pos = pos[ 0 ]; int sum_d..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZ5irXmKhwrHBITl SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 난이도가 D4로 책정되어있는데, 그거보단 난이도가 더 높은듯 하다. 전역 변수N : 배열의 최대 길이를 정의할 상수 변수M : 비트 마스크의 최대 길이를 정의할 상수 변수colors : 각 노드의 색상을 저장할 정수형 배열edges : 인접 리스트를 저장할 정수형 벡터 배열n : 노드의 개수를 저장할 변수m : 간선의 개수를 저장할 변수k : 색상의 개수를 저장할 변수dp : 색상과 현재 노드 기..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZ3XsxFqSCvHBIPV SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com D4치곤 쉬운 그리디 알고리즘 문제인 것 같다. 전역 변수N : 배열의 최대 크기를 정의할 상수 변수works : 숙제 정보를 저장할 pair쌍 배열 함수없음 문제풀이t값을 입력 받고, t번의 테스트 케이스를 수행한다.매 테스트 케이스마다 n값을 입력 받고, n개의 숙제 정보를 입력 받아 works배열을 초기화한다.sort함수를 통해 works배열을 내림차순으로 정렬한다, 이때 t가 pair의 ..
리뷰https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AZtxnSyquD7HBIQE SW Expert AcademySW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!swexpertacademy.com 백준이 없어져서 다시 알고리즘 문제를 풀기 위해 SWEA로 돌아오게 되었다. 전역 변수target : 타겟 문자열을 정의할 상수 변수 함수없음 문제풀이정수형 변수 t, n과 문자열 변수 str을 초기화 하고, t값을 받아준다.t번의 while루프를 수행하고, 매 루프마다 n, str를 입력 받고, 변수 stack을 빈 문자열로 초기화한다.str을 순회하며 현재 문자를 변수 c에 저장하고, c를 ..
리뷰 https://www.acmicpc.net/problem/23300출력 형식을 맞추기가 까다로운 문제 전역 변수n : 접속할 수 있는 웹페이지의 종류의 개수를 저장할 변수q : 쿼리의 개수를 저장할 변수 함수없음 문제풀이n, q값을 입력 받고, 정수형 벡터 backward, forward를 초기화한다.변수 cur을 0으로 초기화 하고, q번의 쿼리 명령을 매번 변수 c에 입력 받는다.c가 'B'고, backward가 비지 않았다면, forward에 cur를 push하고, cur을 backward의 맨 끝 요소로 저장한다, 이후 backward의 맨 끝 요소를 pop처리한다.c가 'F'고, forward가 비지 않았다면, backward에 cur을 push하고, cur을 forward의 맨 끝 요..
리뷰 https://www.acmicpc.net/problem/21773우선순위 큐를 활용해 초마다 실행된 프로세스의 id를 출력하는 문제 전역 변수t : 프로세스가 실행될 초를 저장할 변수n : 프로세스의 개수를 저장할 변수Process : 프로세스 정보를 정의할 구조체, 우선순위를 기준으로 내림차순 정렬한다. 함수없음 문제풀이t, n값을 입력 받고, Process타입의 우선순위 큐 pq를 초기화한다.n개의 프로세스 정보를 입력 받아 pq에 push한다.t번의 while루프를 수행하고, 변수 process에 현재 pq의 top요소를 가져오고, pop처리한다.변수 id, time, priority에 프로세스 정보를 파싱하고, id를 출력 후 줄바꿈을 수행한다.time을 전위감소한 값이 0보다 클 경우..
리뷰 https://www.acmicpc.net/problem/15809아으 여러모로 실수가 많았던 문제 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 노드의 개수를 저장할 변수m : 쿼리의 개수를 저장할 변수nodes : 노드가 속한 집합의 번호를 저장할 배열troops : 노드가 가진 병사의 수를 저장할 배열 함수1. Findint Find( int a ){ if ( nodes[ a ] == a ) return a; return nodes[ a ] = Find( nodes[ a ] );} 노드가 속한 그룹의 번호를 반환하고, 경로 압축을 수행하는 함수 2. Allyvoid Ally( int a, int b ){ int A = Find( a ); int B = Find( b ); nod..
리뷰 https://www.acmicpc.net/problem/28449문제를 보자마자 lower_bound가 떠올랐다. 전역 변수N : 배열의 최대 크기를 정의할 상수 변수hi : hi팀의 참가자의 코딩실력을 저장할 배열arc : arc팀의 참가자의 코딩실력을 저장할 배열dic : hi팀의 코딩실력별 인원 수를 저장할 배열n : hi팀의 인원 수를 저장할 변수m : arc팀의 인원수를 저장할 변수 함수1. GetWinCountstatic ll GetWinCount( int A[], int B[], int a, int b ){ ll winCount = 0; for ( int i = 0; i A팀이 B팀 상대로 얼마나 많이 승리했는지를 반환하기 위한 함수 문제풀이n, m값을 입력 받고 n명의 hi팀의..
리뷰 https://www.acmicpc.net/problem/17352그래프에서 다른 그룹인 두 노드의 번호를 출력하는 문제 전역 변수N : 배열의 최대 크기를 정의할 정수형 상수 변수n : 노드의 개수를 저장할 정수형 변수v : 방문 여부를 저장할 논리형 배열edges : 간선 정보를 저장할 정수형 벡터 배열 함수1. bfsvoid bfs(){ queue q; q.push( 1 ); v[ 1 ] = true; while ( !q.empty() ) { int cn = q.front(); q.pop(); for ( int nn : edges[ cn ] ) { if ( v[ nn ] ) continue; v[ nn ] = true; q.push( nn ); } }} 같은 그래프 내..
리뷰 https://www.acmicpc.net/problem/16432깊이 우선 탐색과 메모제이션을 활용해 푸는 문제 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 노드의 개수를 저장할 변수flag : 최적 경로를 찾았는지 여부를 저장할 변수edges : 간선 정보를 저장할 벡터 배열v : 이미 방문한 상황인지 여부를 체크하기 위한 2차원 배열 함수1. dfsvoid dfs( int level, vector& stack ){ if ( flag ) return; if ( level == n ) { flag = true; for ( int i : stack ) cout n까지 도달 가능한 최적의 경로를 찾기 위한 함수 문제풀이n값을 입력 받고, n개의 날에 가진 떡을 입력 받아 ..
리뷰 https://www.acmicpc.net/problem/6248점심시간에 부랴부랴 푼 기본적인 다익스트라 문제 전역 변수N : 배열의 최대 개수를 정의할 상수 변수n : 노드의 개수를 저장할 변수m : 간선의 개수를 저장할 변수x : 중심 노드의 번호를 저장할 변수Edge : 간선 정보를 정의할 구조체edges : 인접 리스트를 저장할 Edge타입 벡터 배열Pos : 현재 위치와 누적 가중치를 정의할 구조체, 누적 가중치를 기준으로 오름차순 정렬한다. 함수1. dijkstraint dijkstra(){ priority_queue pq; pq.push( { x, 0 } ); vector dist( n + 1, 2e9 ); dist[ x ] = 0; while ( !pq.empty() ) { co..
리뷰 https://www.acmicpc.net/problem/12980오랜만에 풀어본 쉽고 재미있는 백트래킹 문제 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 순열의 크기를 저장할 변수s : 목표 점수를 저장할 변수ans : 목표 점수와 일치하는 순열의 개수를 저장할 변수arr : 칠판에 적혀있는 순열 정보를 저장할 정수형 배열visit : 숫자를 사용했는지 여부를 저장할 논리형 배열can_use : 0에 들어올 수 있는 숫자를 저장할 정수형 벡터 함수1. Printvoid Print( int cnt, vector& maked ){ for ( int d : maked ) { cout 디버깅용 함수 2. BackTrackingvoid BackTracking( int level, int..
리뷰 https://www.acmicpc.net/problem/32644오랜만에 풀어본 세그먼트 트리 문제 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 문제를 푼 회원수를 저장할 변수m : 당첨 인원수를 저장할 변수arr : 각 회원의 가중치를 저장할 배열tree : 세그먼트 트리 정보를 저장할 배열 함수1. buildvoid build( int node, int s, int e ){ if ( s == e ) tree[ node ] = arr[ s ]; else { int mid = ( s + e ) / 2; build( node * 2, s, mid ); build( node * 2 + 1, mid + 1, e ); tree[ node ] = tree[ node * 2 ] +..
리뷰 https://www.acmicpc.net/problem/14588간만에 풀어본 플로이드 와샬 문제, 재미있었다. 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 노드의 개수를 저장할 변수q : 쿼리의 개수를 저장할 변수pos : 각 노드의 x좌표 범위를 저장할 변수dist : 각 노드간 거리를 저장할 2차원 정수 배열 함수1. Initvoid Init(){ for ( int i = 0; i > l >> r; pos[ i ] = { l, r }; } for ( int i = 0; i 입력 및 초기화를 담당하는 함수 2. FloydWarshallvoid FloydWarshall(){ for ( int k = 0; k 플로이드 와샬을 통해 노드간 최단 거리를 구하기 위한 함수 문제풀..
리뷰 https://www.acmicpc.net/problem/34949N번 노드에서 모든 노드까지의 거리를 구하는 문제 전역 변수N : 배열의 최대 크기를 정의할 상수 변수n : 노드의 개수를 저장할 변수dist : n번 노드에서 모든 노드까지의 거리를 저장할 배열edges : 간선 정보를 저장할 정수형 벡터 배열 함수1. bfsvoid bfs(){ queue q; q.push( n ); dist[ n ] = 0; while ( !q.empty() ) { int cn = q.front(); q.pop(); for ( int nn : edges[ cn ] ) { if ( dist[ nn ] != -1 ) continue; dist[ nn ] = dist[ cn ] + 1; q.pu..
리뷰 https://www.acmicpc.net/problem/14907오랜만에 풀어본 위상 정렬 + 파싱 문제, 재미있었다. 전역 변수cnt : 자신에게 들어오는 간선의 개수를 저장할 해시맵weights : 자신의 가중치를 저장할 해시맵pre_sum : 자신에게 누적된 가중치의 최대값을 저장할 해시맵edges : 자신으로 부터 갈 수 있는 노드를 저장한 인접 리스트 해시맵 함수1. Splitvector Split(const string& s){ stringstream ss( s ); vector args; string temp = ""; while ( getline( ss, temp, ' ' ) ) args.push_back( temp ); return args;} 개행문자를 기준으로 문자열을 입..
