📌 문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 📌 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 📌 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 📌 문제 풀이 👨🏫 접근 백트래킹의 꽃인 N-Queen 문제이다. N-Queen이 가능한 모든 경우를 탐색해야 한다. 👨🏫 문제 풀이 📄 전체 코드 n = int(input()) flag_1 = [0] * n flag_2 = [0] * (2 * n - 1) flag_3 = [0] * (2 * n - 1) cnt = 0 def nQueen(depth): global cnt if dep..
백준
📌 문제 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 📌 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다. 📌 출력 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. 📌 문제 풀이 👨🏫 접근 1, 2, 3을 사용해서 만들 수 있는 경우를 모두 구하는 문제. 다이나믹 프로그래밍과 백트래킹 둘 중 하나를 사용해서 풀이할 수 있다...
📌 문제 독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다. 로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다. 예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]) 집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오. 📌 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다..
어느새 백준에서 푼 알고리즘 문제의 개수도 400개가 다 되어간다. 처음에는 그저 호기심으로 시작했던 파이썬이 점점 내 삶의 일부가 되고 현재는 자바스크립트와 리액트, NestJS와 Express를 공부하게 되었다. 진로도 중·고등학교 지리교과 선생님이었지만, 파이썬을 만나 머신러닝 모델 개발자에서 현재는 웹 개발자로의 꿈을 키우고 있다. 물론 도메인 지식도 중요하지만 개발자는 기본적으로 실용적으로 사고하고 최적의 코드를 작성해야 하기 때문에 알고리즘을 통해 컴퓨팅 사고를 형성하는 것은 기본이다. 그래서 알고리즘 공부를 열심히 했다. 처음에는 레이튼 교수 시리즈 게임을 하는 것처럼 수수께끼를 푸는 기분이었지만, 점차 알고 있어야 하는 알고리즘도 늘어나고 쉽게 떠올릴 수 없는 풀이도 생기면서 지칠 때도 있..