본문 바로가기
728x90
반응형

Python437

[백준] 14888번 : 연산자 끼워넣기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 연산자를 각 수 사이에 넣는 순서에 따라 달라지는 연산의 결과 중 최댓값과 최솟값을 구하는 문제이다. 연산자의 개수에 따라 수많은 조합의 결과가 나오기 때문에 많은 시간이 걸린다. 하지만 우선 모든 조합을 전부 계산해 보며 최댓값과 최솟값을 구해보았다. 처음 비교할 최댓값에는 현재 문제에서 가능한 최솟값인 -10억을, 최솟값에는 현재 문제에서 가능한 최댓값인 10.. 2023. 12. 21.
[백준] 2580번 : 스도쿠 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 빈칸에 적으려는 수가 해당 행에서 겹치지 않는지 확인하는 함수를 정의한다. def rowCheck(row, v) 해당 행의 각 열의 위치를 불러오며 for c in range(9) 만약 빈칸에 적으려는 수가 이미 해당 행에 동일하게 있으면 if (v == sudoku[row][c]) 빈칸에는 해당 수를 넣을 수 없다. return.. 2023. 12. 20.
[백준] 9663번 : N-Queen - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 퀸을 배치하는 함수를 정의한다. def nQueen(n) 퀸을 배치할 수 있는 모든 경우의 수를 저장할 변수를 외부에서 정의하고 함수 내부에서도 그대로 사용할 수 있도록 global 변수로 가져온다. global count 만약 현재 놓을 퀸이 마지막 퀸이면 if (n == N) 경우의 수를 증가시킨다. count += 1 한 가지 경우를 찾았으.. 2023. 12. 19.
[백준] 15652번 : N과 M (4) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 두 자연수를 입력받는다. N, M = map(int, sys.stdin.readline().split()) 수열을 저장할 리스트를 생성한다. li = list() 수열을 생성할 함수를 정의한다. def dfs(s) 만약 수열의 원소 개수가 원하는 개수를 만족하면 if (len(li) == M) 원소를 하나씩 불러 문자열로 바꾸고 .. 2023. 12. 18.
[백준] 15651번 : N과 M (3) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 가능한 모든 경우의 수인 중복 조합을 구하기 위해 product() 함수를 불러온다. from itertools import product 두 자연수를 입력받는다. N, M = map(int, sys.stdin.readline().split()) 1부터 첫 번째 자연수까지 각 수를 문자 원소로 가진 리스트를 생성한다. li = l.. 2023. 12. 17.
[백준] 2447번 : 별 찍기 - 10 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 동일한 패턴을 가진 별의 모양을 크기에 맞춰 출력하는 문제이다. 가장 기초 패턴인 3일 때의 패턴이 계속 반복되므로 해당 패턴을 반복하여 출력해야 한다. 전체 패턴을 3개의 층으로 구분하여 보면, 제일 위에는 동일한 패턴이 3번 반복되고, 그 아래층은 패턴 + 공백 + 패턴으로 이루어지고, 마지막으로 가장 아래층은 패턴이 3번 반복되는 것을 볼 수 있다. 하여 3일 때의 패턴을 가지고 9일 때.. 2023. 12. 16.
[백준] 4779번 : 칸토어 집합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 4779번: 칸토어 집합 칸토어 집합은 0과 1사이의 실수로 이루어진 집합으로, 구간 [0, 1]에서 시작해서 각 구간을 3등분하여 가운데 구간을 반복적으로 제외하는 방식으로 만든다. 전체 집합이 유한이라고 가정하고, www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 칸토어 집합을 만들기 위한 과정을 함수로 정의하면 def Func(N) 입력으로 들어온 수가 1이면 -를 반환하며 해당 과정을 멈춘다. if (N == 1): return '-' 수가 1이 아니면 해당 수를 3 등분하여 왼쪽, 가운데, 오른쪽 부분으로 나눈다. 왼쪽 부분은 다시 한번 해당 과정을 수행한다. left = Func(N.. 2023. 12. 15.
[백준] 24060번 : 알고리즘 수업 - 병합 정렬 1 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 24060번: 알고리즘 수업 - 병합 정렬 1 첫째 줄에 배열 A의 크기 N(5 ≤ N ≤ 500,000), 저장 횟수 K(1 ≤ K ≤ 108)가 주어진다. 다음 줄에 서로 다른 배열 A의 원소 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 109) www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 배열의 원소들을 오름차순으로 정렬하며 각 과정별로 저장되는 값을 저장하고 이를 횟수에 따라 출력하는 문제이다. 문제에 나와있는 배열을 병합 정렬하는 코드를 활용해 정렬을 수행하는데, 여기서 각 과정별로 저장되는 값을 따로 저장해줘야 하므로 해당 값을 저장할 리스트를 생성해 과정별로 저장되는 값을 해당 리스트에 추가한다. 만약 저장된 값의 개수가 입력으로 받은 저장 횟수보다 .. 2023. 12. 14.
[백준] 25501번 : 재귀의 귀재 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 25501번: 재귀의 귀재 각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다. www.acmicpc.net 1. 문제 설명 2. 풀이과정 해당 문제는 팰린드롬인지 파악하는 isPalindrome 함수의 반환값과 그 과정에서 호출된 recursion 함수의 횟수를 구해야 하는 문제이다. isPalindrome 함수의 반환값은 문제에서 주어진 함수를 그대로 가져오면 쉽게 구할 수 있다. 하지만 recursion 함수의 횟수는 구할 수 없다. 하여 각 함수에 cnt라는 새로운 인수를 추가하여 recursion 함수의 횟수를 저장한다. recursion 함수에서 팰린드롬인지 아닌지 결과를 반환할 때, 기존 함수의 반환인 해당 결.. 2023. 12. 13.
[백준] 20920번 : 영단어 암기는 괴로워 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 20920번: 영단어 암기는 괴로워 첫째 줄에는 영어 지문에 나오는 단어의 개수 $N$과 외울 단어의 길이 기준이 되는 $M$이 공백으로 구분되어 주어진다. ($1 \leq N \leq 100\,000$, $1 \leq M \leq 10$) 둘째 줄부터 $N+1$번째 줄까지 외울 단 www.acmicpc.net 1. 문제 설명 2. 풀이과정 sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys 영어 지문에 나오는 단어의 개수와 외울 단어의 길이 기준을 입력받는다. N, M = map(int, sys.stdin.readline().split()) 영어 단어와 해당 단어가 나온 횟수를 저장할 딕셔너리를 생성한다. d = {} 영어 단어의 개수만큼 반복하며 f.. 2023. 12. 12.
728x90
반응형