전체 글

알고리즘

[BOJ] 토마토 - 7569

🎨 문제 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 📘 풀이 이 문제는 BFS로 풀 수 있습니다. 이전에 풀이한 문제와 유사하여 이 글을 읽고 오시면 도움이 될 것입니다. 차이점은 토마토 농장이 높이(H)가 생긴 겁입니다. 문제 풀이 과정을 정리하면 다음과 같습니다. 익어야할 남은 토마토의 개수를 계산 BFS를 통해 익은 토마토와 인접한 토마토를 익힘 BFS가 종료되었을 때 남은 토마토가 모두 익었다면 -1, 아니라면 토마토가 익기까지 걸린 시간 반환 농장에 높이(H)가 생겼으므로..

알고리즘

[BOJ] 토마토 - 7576

🎨 문제 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 📘 풀이 이 문제는 BFS로 풀 수 있습니다. 익은 토마토를 큐에 넣고 빼면서 주변 토마토를 익은 토마토로 만들어주면 됩니다. 전체 토마토의 개수를 셉니다. 토마토 농장에는 벽이 있습니다. 입력을 받을 때 벽에는 토마토가 없기 때문에 전체 토마토 개수에서 벽 부분은 빼줍니다. 그리고 익은 토마토일 경우 큐에 토마토를 담아 둡니다. for (int i = 0; i < N; i++) { StringTokenizer st = new Strin..

회고

[구름톤 트레이닝 풀스택] 3주차 회고

Keep 메타 인지 학습법의 연장선으로 Known Unkown 방식으로 저만의 커리큘럼을 만들었습니다! Known Unkown이란 알지만 이해하지 못한 것, 앞으로 알아나가야할 것을 의미합니다. 취준의 가장 힘든 점은 내가 나아가는 길이 옳은 길인지에 대한 확신이 없다는 것입니다. 한 번의 합격을 위해 수많은 불합격을 받습니다. 그 과정에서 좌절하지 않고 앞으로 나아가기 위해선 옳다고 확신할 수 있는 길이 필요합니다. 저는 이것을 Known Unkown으로 만들었습니다. 백엔드 개발자가 되기 위해 필요한 것들을 정리했습니다. 객관적인 지표를 위해 최종 결과물로 무엇을 만들지 작성했습니다. 또한 TIL과 연동해 어떠한 것을 알고있는지 최대한 한 눈에 파악하려고 노력했습니다. Known Unkown을 통해..

Database

[MySQL] 옵티마이저 - 기본 데이터 처리

MySQL 서버는 사용자의 요청을 처리하기 위해 1) 데이터를 가공하는 기본 절차 2) 빠른 성능을 보장하기 위한 최적화를 수행합니다. 이번 글에서는 데이터를 정렬하거나 그루핑하는 등의 기본 데이터 가공 기능에 관해 살펴보겠습니다. 풀 테이블 스캔과 풀 인덱스 스캔 풀 테이블 스캔은 인덱스를 사용하지 않고 테이블의 데이터를 처음부터 끝까지 읽는 작업을 의미합니다. 다음과 같은 조건일 때 주로 풀 테이블 스캔을 선택합니다. 테이블의 레코드 건수가 너무 작아 인덱스를 사용하는 것보다 테이블을 스캔하는 것이 빠를 경우(일반적으로 테이블이 페이지 1개로 구성된 경우) WHERE 절이나 ON 절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우 인덱스 레인지 스캔을 사용할 수 있는 쿼리라고 하더라도 옵티마이저가..

Database

[MySQL] 옵티마이저 - 개요

MySQL 서버로 요청된 쿼리는 결과는 동일하지만 내부적인 방법은 다양합니다. 다양한 방법 중 어떤 방법이 최적이고 최소 비용이 소모될지 결정해야 합니다. MySQL은 쿼리를 최적으로 실행하기 위해 테이블의 데이터 통계 정보를 참조하여 최적의 실행 계획을 수립합니다. 이러한 기능은 옵티마이저가 수행합니다. 쿼리 수행 절차 MySQL 서버에서 쿼리가 실행되는 과정은 크게 세 단계로 나눌 수 있습니다. SQL 문장을 쪼개서 MySQL 서버가 이해할 수 있는 수준으로 분리 SQL 파싱 정보를 확인하면서 어떤 테이블을 읽고 어떤 인덱스를 사용할지 선택 테이블 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로부터 데이터를 가져옴 첫 번째 단계를 "SQL 파싱"이라 하며, SQL 파서가 실행합니다. 이 단계에서..

알고리즘

[BOJ] 팰린드롬?

🎨 문제 10942번: 팰린드롬? 총 M개의 줄에 걸쳐 홍준이의 질문에 대한 명우의 답을 입력으로 주어진 순서에 따라서 출력한다. 팰린드롬인 경우에는 1, 아닌 경우에는 0을 출력한다. www.acmicpc.net 📘 풀이 이 문제는 DP로 풀 수 있습니다. 문제를 정리하면 다음과 같습니다. 길이가 최대 2,000인 수열이 주어진다. 수열의 [S, E] 구간의 수가 펠린드롬인지 판별한다. 판별 질의는 최대 1,000,000 주어진다. 주어진 구간이 펠린드롬인지 판별하는 일반적인 방법은 구간 양 끝점부터 서로 같은 수인지 비교를 하는 방법입니다. 이 경우 한 쿼리 당 최대 수열의 길이만큼의 확인이 필요합니다. 하지만 질의가 1,000,000번 주어지기 때문에 매 번 비교를 할 수 없습니다. 그래서 이전 쿼..

알고리즘

[BOJ] 경로 찾기 - 1513

🎨 문제 1513번: 경로 찾기 첫째 줄에 0개 방문했을 때, 1개 방문했을 때, ..., C개 방문했을 때 총 경로의 개수를 한 줄에 공백을 사이에 두고 출력한다. 경로의 개수는 1,000,007로 나눈 나머지를 출력한다. www.acmicpc.net 📘 풀이 이 문제는 DP로 풀 수 있습니다. 만약 완전 탐색을 할 경우 거쳐가는 오락실의 개수의 경우의 수(0~50)만큼 학원을 가는 경우의 수를 완전탐색으로 구하게 됩니다. 1,000,0007로 나누는 것을 보면 경우의 수가 아주 커서 이 방법은 옳지 않음을 짐작할 수 있습니다. 따라서 이동 경로를 기억하여 다음 연산에 사용하도록 합시다. DP문제 풀이의 중요한 포인트는 점화식도 있지만, 상태값도 중요합니다. 점화식은 특정 상태에서의 최적값을 구하는 식..

알고리즘

[BOJ] 사탕 가게 - 4781

🎨 문제 https://www.acmicpc.net/problem/4781 4781번: 사탕 가게 각 테스트 케이스의 첫째 줄에는 가게에 있는 사탕 종류의 수 n과 상근이가 가지고 있는 돈의 양 m이 주어진다. (1 ≤ n ≤ 5,000, 0.01 ≤ m ≤ 100.00) m은 항상 소수점 둘째자리까지 주어진다. 다음 n개 www.acmicpc.net 📘 풀이 이 문제는 DP로 풀 수 있습니다. 특히 배낭 문제를 아신다면 쉽게 풀 수 있습니다. 문제의 특이한 점은 사탕의 가격이 소수점 둘째자리까지 표현된 소수인 점입니다. 소수 간 연산은 오차가 발생할 수 있으므로 소수를 정수로 변환해 주었습니다. 저는 문자열에서 '.'을 지워주는 방식을 선택했습니다. String input = "8.00"; String..

회고

[구름톤 트레이닝 풀스택] 2주차 회고

벌써 적응했네? 1주차는 인프런 수업, 스터디 등 새로운(?) 환경에 적응하느라 바빴습니다. 사실 새로운 환경이라기 보단 익숙한 환경에 적응하는 것이 힘들었습니다. 혼자 취업준비를 할 땐 카페도 가보고 중간에 산책도 가고 나름 환기할 거리가 많았습니다. 하지만 적응기가 끝나고 2주차가 되면서 혼자 앉아서 8시간을 학습하는 것이 버겁다는 것을 느꼈습니다. 특히 자기주도적학습이라는 점이 더욱 저를 힘들게 했습니다. 학교 수업처럼 책만 보고 수업만 듣는다고 개발자가 되는 것은 아닙니다. 좀 더 명확한 목표를 가지고 그곳을 향해 나아간다는 생각이 들지 않으면 금방 지칠 것을 깨달았습니다. 그래서 이글 마지막에 제가 어떠한 방식으로 목표를 세울지 정리해 두었습니다. 맥북 네 받고야 말았습니다, '맥북'님을. 구름..

acisliver
와당탕탕 개발놀이터