Problem Solving

[알고리즘] 06. 알고리즘 문제 풀이 순서

[알고리즘] 06. 알고리즘 문제 풀이 순서지난 글에서는 완전탐색이 필요한 상황에 대해 정리했습니다. 이번 글에서는 알고리즘 문제를 풀 때 어떤 순서로 접근하면 좋은지 알아보겠습니다.알고리즘 문제를 처음 풀 때 가장 많이 하는 실수는 문제를 읽자마자 바로 코드를 작성하는 것입니다. 물론 쉬운 문제라면 바로 풀릴 수도 있지만, 조금만 조건이 복잡해져도 중간에 흐름이 꼬이기 쉽습니다.알고리즘 문제 풀이는 코드를 먼저 쓰는 것이 아니라, 문제를 정리하는 것에서 시작됩니다.1. 문제를 먼저 정확히 이해하기알고리즘 문제를 풀 때 가장 먼저 해야 할 일은 문제를 정확히 이해하는 것입니다. 문제를 대충 읽고 바로 코드를 작성하면 조건을 놓치거나, 전혀 다른 방향으로 풀게 될 수 있습니다.문제를 읽을 때는 아래 내용을..

[알고리즘] 05. 완전탐색이 필요한 상황

[알고리즘] 05. 완전탐색이 필요한 상황지난 글에서는 입력 크기별 알고리즘 선택법에 대해 정리했습니다. 이번 글에서는 알고리즘 문제에서 자주 등장하는 완전탐색에 대해 알아보겠습니다.완전탐색은 이름 그대로 가능한 경우를 하나씩 모두 확인하는 방법입니다. 처음 알고리즘을 공부할 때 가장 먼저 익숙해져야 하는 풀이 방식이기도 합니다.완전탐색은 가능한 모든 경우를 직접 확인해서 정답을 찾는 방법입니다.1. 완전탐색이란?완전탐색은 문제에서 가능한 모든 경우를 하나씩 확인하는 방식입니다. 특별한 규칙이나 빠른 방법을 찾기 어렵다면, 가장 단순하게 모든 경우를 검사해볼 수 있습니다.예를 들어 배열에서 가장 큰 값을 찾는 문제를 생각해보겠습니다.int[] arr = {3, 7, 2, 9, 5};int max = ar..

[알고리즘] 04. 입력 크기별 알고리즘 선택법

[알고리즘] 04. 입력 크기별 알고리즘 선택법지난 글에서는 공간복잡도에 대해 정리했습니다. 이번 글에서는 알고리즘 문제를 풀 때 매우 중요한 기준인 입력 크기별 알고리즘 선택법에 대해 알아보겠습니다.알고리즘 문제를 풀다 보면 같은 문제처럼 보여도 입력 크기에 따라 전혀 다른 풀이가 필요할 때가 있습니다. 입력 개수가 작으면 단순 반복문으로도 충분하지만, 입력 개수가 커지면 더 효율적인 방법을 사용해야 합니다.입력 크기는 어떤 알고리즘을 사용할 수 있는지 판단하는 가장 중요한 힌트입니다.1. 왜 입력 크기를 먼저 봐야 할까요?알고리즘 문제를 풀 때 많은 사람이 문제 설명부터 읽고 바로 코드를 작성하려고 합니다. 하지만 실제로는 입력 제한을 먼저 확인하는 습관이 중요합니다.입력 제한을 보면 어떤 풀이가 가..

[알고리즘] 03. 공간복잡도란 무엇인가?

[알고리즘] 03. 공간복잡도란 무엇인가?지난 글에서는 시간복잡도와 Big-O에 대해 정리했습니다. 이번 글에서는 알고리즘을 분석할 때 시간복잡도와 함께 자주 등장하는 공간복잡도에 대해 알아보겠습니다.시간복잡도가 코드가 얼마나 오래 걸리는지를 보는 기준이라면, 공간복잡도는 코드가 실행될 때 메모리를 얼마나 사용하는지를 보는 기준입니다.공간복잡도는 알고리즘이 실행되는 동안 필요한 메모리의 양을 표현하는 개념입니다.1. 공간복잡도가 필요한 이유알고리즘 문제를 풀 때는 보통 실행 시간만 생각하기 쉽습니다. 하지만 프로그램은 실행되는 동안 메모리도 함께 사용합니다.예를 들어 배열을 만들거나, 리스트에 값을 저장하거나, 방문 여부를 체크하기 위해 boolean 배열을 만드는 것도 모두 메모리를 사용하는 작업입니다..

[알고리즘] 02. 시간복잡도와 Big-O 쉽게 이해하기

[알고리즘] 02. 시간복잡도와 Big-O 쉽게 이해하기지난 글에서는 알고리즘이 문제를 해결하기 위한 순서라고 정리했습니다. 이번 글에서는 알고리즘을 공부할 때 거의 반드시 나오는 개념인 시간복잡도와 Big-O에 대해 알아보겠습니다.처음에는 이름부터 어렵게 느껴질 수 있습니다. 하지만 핵심은 단순합니다.시간복잡도는 입력값이 많아질 때, 코드가 얼마나 오래 걸릴지 대략 판단하는 기준입니다.1. 시간복잡도가 필요한 이유코드는 결과만 맞으면 끝이라고 생각하기 쉽습니다. 하지만 알고리즘 문제에서는 정답이 맞는 것만큼 시간 안에 실행되는 것도 중요합니다.예를 들어 회원이 10명일 때는 어떤 방식으로 찾아도 크게 차이가 나지 않습니다. 하지만 회원이 10만 명, 100만 명이 되면 이야기가 달라집니다.10명 중에서..

[알고리즘] 01. 알고리즘이 뭐예요?

[알고리즘] 01. 알고리즘이 뭐예요?알고리즘은 어렵게 들리지만, 한마디로 말하면 문제를 해결하기 위한 순서입니다.개발을 공부하다 보면 알고리즘이라는 말을 정말 자주 듣게 됩니다. 처음에는 수학 같고, 복잡한 공식 같고, 문제를 많이 풀어야만 이해할 수 있는 영역처럼 느껴질 수 있습니다.하지만 알고리즘의 시작은 그렇게 어렵지 않습니다. 우리가 평소에 어떤 일을 순서대로 처리하는 것 자체가 이미 알고리즘과 비슷합니다.1. 알고리즘은 문제 해결 순서입니다예를 들어 라면을 끓인다고 생각해보겠습니다.냄비에 물을 넣는다.물을 끓인다.면과 스프를 넣는다.정해진 시간만큼 끓인다.그릇에 담는다.이 과정도 넓게 보면 하나의 알고리즘입니다. 목표는 라면을 완성하는 것이고, 그 목표를 이루기 위해 필요한 순서가 정리되어 있..

[기초테스트] 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기

📝 문제 설명 문자열 myString과 pat이 주어집니다. myString의 부분 문자열 중 pat로 끝나는 가장 긴 부분 문자열을 찾아서 return 하는 solution 함수를 완성해 주세요. ⚠️ 제한사항 5 ≤ myString ≤ 20 1 ≤ pat ≤ 5 pat은 반드시 myString의 부분 문자열로 주어집니다. 대소문자를 구분합니다. 입출력 예 myString pat result "AbCdEFG" "dE" "AbCdE" ..

썸네일

[트러블슈팅] 405 에러

HTTP 405 Method Not Allowed: "너 여긴 어떻게 들어왔니?"웹 개발을 하다 보면 가끔 마주치는 에러인데, 404(찾을 수 없음)나 500(서버 터짐)만큼이나 당황스러운 녀석이 바로 405 에러예요. 이름 그대로 '허가되지 않은 메소드'라는 뜻인데, 쉽게 말하면 문앞까지는 잘 찾아왔는데 "그 문으로 들어오려는 방식이 잘못됐다"고 서버가 거절하는 상황인 거죠.1. 도대체 왜 뜨는 걸까? (주요 원인)가장 흔한 이유는 '길(URL)'은 맞는데 '이동 수단(Method)'이 틀렸을 때예요. 예를 들면 이런 상황들이죠.GET vs POST 배달 사고: 서버는 데이터를 등록하려고 POST 방식만 기다리고 있는데, 주소창에 주소를 직접 치고 엔터를 누르면(GET 방식) 서버가 "난 등록만 받는데..