[프로그래머스 LV.0] 등수 매기기 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/120882 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리영어 점수와 수학 점수가 담긴 2차원 배열 score가 주어졌을 때, 각 학생의 평균 점수를 기준으로 등수를 매긴 결과를 반환하는 문제입니다.입력: 각 학생의 영어 점수와 수학 점수가 [영어, 수학] 형태로 주어집니다.처리: 학생별 평균 점수를 구한 뒤, 높은 평균 점수부터 등수를 매깁니다.반환값: 원래 학생 순서에 맞춰 각 학생의 등수를 담은 배열을 반환합니다. 💡 3. 핵심 개념✔ 1) 학생..
[프로그래머스 LV.1] 완주하지 못한 선수 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리마라톤에 참여한 선수들의 이름이 담긴 participant와 완주한 선수들의 이름이 담긴 completion이 주어졌을 때, 완주하지 못한 선수 한 명의 이름을 찾아 반환하는 문제입니다.입력: participant에는 전체 참가자 이름이, completion에는 완주한 선수 이름이 담겨 있습니다.조건: completion의 길이는 participant보다 1 작고, 참가자 중에는 동명이인이 있을 수 ..
[프로그래머스 LV.0] 문자열 밀기 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/120921 📝 2. 문제 요구사항 정리문자열 A와 B가 주어졌을 때, A를 오른쪽으로 몇 번 밀어야 B가 되는지 구하는 문제입니다. 만들 수 있다면 필요한 최소 횟수를 반환하고, 어떤 방식으로 밀어도 B가 될 수 없다면 -1을 반환해야 합니다.입력: 길이가 같은 두 문자열 A, B가 주어집니다.처리: A를 오른쪽으로 회전시켜 B와 같아질 수 있는지 확인합니다.반환값: 가능하면 최소 회전 횟수, 불가능하면 -1을 반환합니다. 💡 3. 핵심 개념✔ 1) 회전 문자열의 특징 이해하기문자열을 오른쪽으로 밀어 만든 결과들은 원래 문자열의 순환된 형태입니다. 예를 들어 B를 두 번 ..
[Deep Learning] 경사 하강법과 Adam 옵티마이저 차이: 수식과 코드로 이해하는 장단점 비교
·
IT
1. 먼저, 이 질문은 무엇을 묻고 있을까?Gradient Descent(경사하강법), Adam(아담), Optimizer(옵티마이저) 같은 단어들은 모두 "인공지능이 어떤 원리로 똑똑해지는가?"라는 본질적인 문제를 해결하기 위해 존재한다.머신러닝에서 학습(Training)이란 모델이 입력 데이터를 보고 예측한 값과 실제 정답을 비교하여, 틀린 만큼 내부 설정을 고쳐나가며 정답률을 올리는 반복적인 과정 전체를 의미한다. 이 흐름을 이해하기 위해서는 핵심 구성 요소인 '손실 함수'와 '옵티마이저'의 역할을 명확히 정리해야 한다.예측의 기준이 되는 '손실 함수(Loss Function)'인공지능 모델은 스스로의 예측이 정확한지 판단하지 못한다. 모델이 낸 예측값과 실제 정답의 차이와 불일치 정도를 정량적으로..
[프로그래머스 LV.2] 괄호 회전하기 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리대괄호, 중괄호, 소괄호로 이루어진 문자열 s가 주어졌을 때, 문자열을 왼쪽으로 x칸 회전했을 때 올바른 괄호 문자열이 되는 경우의 수를 구하는 문제입니다.회전 범위: x는 0부터 s의 길이 - 1까지이며, 모든 회전 경우를 확인해야 합니다.검증 기준: 여는 괄호와 닫는 괄호의 종류와 순서가 모두 올바르게 맞아야 합니다.반환값: 올바른 괄호 문자열이 되는 회전 횟수의 개수를 반환합니다. 💡 3. ..
[프로그래머스 LV.0] 유한소수 판별하기 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/120878 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리두 정수 a와 b가 주어졌을 때, 분수 a / b가 유한소수로 표현될 수 있는지 판별하는 문제입니다. 유한소수라면 1을, 무한소수라면 2를 반환해야 합니다.핵심 조건: 기약분수로 만들었을 때 분모의 소인수가 2와 5만 남아야 유한소수입니다.약분 처리: a와 b의 최대공약수로 b를 나누어 기약분수의 분모를 구합니다.반환값: 분모에서 2와 5를 모두 제거한 뒤 1이 남으면 1, 다른 값이 남으면 2를 ..
[프로그래머스 LV.0] 배열 만들기 2 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/181921 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리정수 l과 r이 주어졌을 때, l 이상 r 이하의 정수 중에서 숫자 0과 5로만 이루어진 수를 모두 찾아 배열로 반환하는 문제입니다.탐색 범위: l부터 r까지의 모든 정수를 확인합니다.조건: 각 정수를 문자열로 바꿨을 때 모든 문자가 0 또는 5여야 합니다.예외 처리: 조건을 만족하는 수가 하나도 없다면 [-1]을 반환합니다. 💡 3. 핵심 개념✔ 1) 숫자를 문자열로 변환해 자리수 확인하기각 숫..
[프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설
·
코딩테스트/알고리즘
🔗 1. 문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/181893 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📝 2. 문제 요구사항 정리정수 배열 arr와 query가 주어졌을 때, query를 순서대로 확인하면서 arr의 특정 구간만 남기는 문제입니다. query의 인덱스가 짝수인지 홀수인지에 따라 잘라내는 방향이 달라집니다.짝수 인덱스: query[i]번 인덱스까지는 남기고, 그 뒤쪽 원소들을 잘라냅니다.홀수 인덱스: query[i]번 인덱스부터 끝까지 남기고, 그 앞쪽 원소들을 잘라냅니다.최종 반환값: 모든 query를 처리한..
[Python/Pandas] 데이터 리모델링 완벽 이해: 와이드 포맷을 롱 포맷으로 (melt와 pivot)
·
IT
1. 데이터 리모델링의 이해1) 데이터 리모델링이란?정의: 수집된 원천 데이터(Raw Data)의 형태를 분석 목적이나 시각화 도구의 요구 조건에 맞게 데이터프레임의 구조(행과 열)를 재구성하는 프로세스다.필요성: 현업이나 공공데이터 포털에서 제공되는 데이터가 항상 분석과 집계에 최적화된 형태로 제공되지는 않기 때문에 리모델링 과정이 필수적이다.주요 패키지: 파이썬 생태계에서는 Pandas가 데이터 리모델링 패키지 역할을 수행한다. (R 언어의 tidyr, reshape2와 궤를 같이함)💡 NumPy는 왜 리모델링 패키지에 속하지 않을까?본질적 목적의 차이: NumPy는 배열의 형태를 바꾸는 함수(reshape 등)를 지원하지만, 데이터 형태의 재구성보다는 초고속 행렬 연산을 위한 고성능 수치 계산 라..
[FastAPI] async/await는 왜 필요할까? 비동기 처리의 본질과 모델 추론 API 예제로 이해하기
·
IT
📝 1. 미리보는 3줄 요약 (TL;DR)비동기 처리의 본질: 한 작업을 더 빨리 끝내는 기술이 아니라, 결과값을 기다리는 동안 서버가 놀지 않게 하여 전체 처리 능력을 높이는 기술입니다.async/await 문법의 핵심: async def 선언과 내부의 await 호출이 한 세트로 움직여야 하며, await은 대기하는 동안 이벤트 루프에 제어권을 돌려준다는 의미입니다.무조건 비동기가 정답은 아니다: CPU를 오래 쓰는 작업에서는 효과가 제한적이며, 서비스 규모와 병목 지점에 따라 동기와 비동기 방식을 올바르게 선택해야 합니다.🔍 2. 주제에 대한 깊은 이해💡 주요 개념 정리FastAPI: Python으로 API 서버를 만들 수 있는 모던 웹 프레임워크입니다.비동기 처리와 async/await의 차..