분류 전체보기 338

[백준] 9184 : 신나는 함수 실행 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/9184문제재귀 호출만 생각하면 신이 난다! 아닌가요?다음과 같은 재귀함수 w(a, b, c)가 있다.if a 20 or b > 20 or c > 20, then w(a, b, c) returns: w(20, 20, 20)if a 입력입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다.출력입력으로 주어진 각각의 a, b, c에 대해서, w(a, b, c)를 출력한다.예제입력1 1 12 2 210 4 650 50 50-1 7 18-1 -1 -1출력w(1, 1, 1) = 2w(2, 2, 2) = 4w(10,..

백준 2026.01.11

[백준] 15650 : N 과 M (2) (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/15650문제자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열고른 수열은 오름차순이어야 한다.입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.예제입력4 2출력1 21 31 42 32 43 4정답 및 풀이N, M = map(int, input().split())arr = []def dfs(start): if ..

백준 2026.01.11

[런닝 코스 공유 서비스] - 11. JWT 로그인

이번 프로젝트를 시작하면서 가장 고민했던 것 중 하나는 사용자 인증 방식이다.세션 기반 인증과 JWT 토큰 인증 방식 중 어떤 것을 선택해야 할지 고민이었다.이번 글에서는 JWT 를 선택한 이유와 코드로 구현한 과정을 공유하고자 한다.프로젝트 구조와 인증 방식Run-ing 프로젝트의 경우 프론트엔드와 백엔드가 완전히 분리된 구조이며 API 를 통해 통신한다.프론트엔드 : React백엔드 : Spring Boot + Spring Security인증 방식 : REST API 기반인증 방식 비교 : 세션 vs JWT먼저 세션과 JWT 에 대해서 간단하게 알아보자.세션동작 방식사용자가 로그인하면 서버가 세션을 생성세션 ID 를 쿠키에 담아 클라이언트에 전달이후 요청마다 세션 ID 로 사용자 식별장점서버에 세션을..

[백준] 25501 : 재귀의 귀재 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/25501문제정휘는 후배들이 재귀 함수를 잘 다루는 재귀의 귀재인지 알아보기 위해 재귀 함수와 관련된 문제를 출제하기로 했다.팰린드롬이란, 앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열을 말한다. 팰린드롬의 예시로 AAA, ABBA, ABABA 등이 있고, 팰린드롬이 아닌 문자열의 예시로 ABCA, PALINDROME 등이 있다.어떤 문자열이 팰린드롬인지 판별하는 문제는 재귀 함수를 이용해 쉽게 해결할 수 있다. 아래 코드의 isPalindrome 함수는 주어진 문자열이 팰린드롬이면 1, 팰린드롬이 아니면 0을 반환하는 함수다.#include #include int recursion(const char *s, int l, in..

백준 2026.01.02

[백준] 10870 : 피보나치 수 5 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/10870문제피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.n=17일때 까지 피보나치 수를 써보면 다음과 같다.0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다.출력첫째 줄에 n번째 피보나치 수를 출력한다.예제입력10출력55정답 및 풀이imp..

백준 2026.01.02

[백준] 15649 : N 과 M (1) (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/15649문제자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열입력첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.예제입력4 2출력1 21 31 42 12 32 43 13 23 44 14 24 3정답 및 풀이import sysinput = sys.stdin.readlinen, m = map(int, input().sp..

백준 2026.01.02

[백준] 27433 : 팩토리얼 2 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/27433문제0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.입력첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.출력첫째 줄에 N!을 출력한다.예제입력10출력3628800정답 및 풀이import sysinput = sys.stdin.readlinedef factorial(num): if num import sys표준 입력을 빠르게 처리하기 위해 sys 모듈을 불러온다.input = sys.stdin.readlineinput() 대신 sys.stdin.readline()을 사용해 입력 속도를 개선한다.def factorial(num):팩토리얼을 계산하는 재귀 함수를 정의한다.if num 재귀 종..

백준 2026.01.02

[백준] 20920 : 영단어 암기는 괴로워 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/20920문제화은이는 이번 영어 시험에서 틀린 문제를 바탕으로 영어 단어 암기를 하려고 한다. 그 과정에서 효율적으로 영어 단어를 외우기 위해 영어 단어장을 만들려 하고 있다. 화은이가 만들고자 하는 단어장의 단어 순서는 다음과 같은 우선순위를 차례로 적용하여 만들어진다.자주 나오는 단어일수록 앞에 배치한다.해당 단어의 길이가 길수록 앞에 배치한다.알파벳 사전 순으로 앞에 있는 단어일수록 앞에 배치한다 M보다 짧은 길이의 단어의 경우 읽는 것만으로도 외울 수 있기 때문에 길이가 M이상인 단어들만 외운다고 한다. 화은이가 괴로운 영단어 암기를 효율적으로 할 수 있도록 단어장을 만들어 주자.입력첫째 줄에는 영어 지문에 나오는 단어의 개수 N과..

백준 2026.01.02

[백준] 2108 : 통계학 (Python/파이썬)

문제 링크https://www.acmicpc.net/problem/2108문제수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자.산술평균 : N개의 수들의 합을 N으로 나눈 값중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값최빈값 : N개의 수들 중 가장 많이 나타나는 값범위 : N개의 수들 중 최댓값과 최솟값의 차이N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오.입력첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않..

백준 2026.01.02