728x90
반응형

파이썬 22

[프로그래머스] 자릿수 더하기

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12931문제 요약자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.푼 방법정수를 입력받은 후 이를 문자열화, 리스트화 시킨 후순차적으로 돌면서 각 요소를 정수화 한 뒤 결과변수에 저장 정답 코드def solution(n): answer = 0 li = list(str(n)) for i in li: answer += int(i) return answer

[프로그래머스] 약수의 합

문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/12928#qna문제 요약정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.푼 방법정수 i를 i*i 이때 약수가 제곱수가 되는 경우, n%i와 n/i이 두번 더해지기 때문에, 제곱수인경우 그 수는 한번만 더해줌 (8번 조건문) 정답 코드def solution(n): answer = 0 i = 1 while i*i 배웠던 부분프로그래머스 Lv1부터 쭉 풀어보겠습니다

[백준] 17259 - 선물이 넘쳐흘

문제 링크https://www.acmicpc.net/problem/17259문제 요약 욱제가 팬들에게 선물을 주기 위해 ⊐ 모양 컨베이어 벨트가 있는 B×B 크기의 공장을 운영합니다.M개의 선물이 컨베이어 벨트를 따라 이동하고, 벨트는 매 초마다 한 칸씩 움직입니다.벨트에 인접한 칸에 직원이 배치되어 있으며, 직원들은 자신이 설정된 시간을 기준으로 선물을 포장할 수 있습니다.벨트의 끝까지 포장되지 않은 선물은 폐기됩니다.포장된 선물의 총 개수를 계산해야 합니다. 푼 방법데이터 구조 초기화:world: 공장의 상태를 나타내는 2D 배열, 각 칸에 선물이 있는지 여부를 표시.employees: 직원클래스, 각 직원의 위치와 상태를 저장.컨베이어 벨트의 동작:컨베이어 벨트는 매 초마다 이동하며, 이동 규칙은 ..

[백준] 2615 - 오목

문제 링크문제 제목문제 요약오목 문제19×19 바둑판 위에서 흑(1)과 백(2)이 교대로 바둑알을 놓습니다.같은 색 바둑알이 연속으로 정확히 5개 놓이면 그 색이 승리합니다.연속된 다섯 개의 바둑알은 가로, 세로, 대각선(좌상-우하, 좌하-우상) 방향으로 가능합니다.여섯 개 이상의 바둑알이 연속되면 승리가 아닙니다.승리한 경우, 가장 왼쪽(또는 세로로는 가장 위쪽) 바둑알의 좌표를 출력해야 합니다.푼 방법 바둑판 상태 입력 받기:19줄의 입력을 받아 19x19 이차원 배열로 바둑판을 표현합니다.승리 조건 검사 함수 작성:방향 설정: 네 가지 방향에 대해 검사를 수행합니다.가로 방향 (0, 1)세로 방향 (1, 0)대각선 오른쪽 아래 (1, 1)대각선 오른쪽 위 (-1, 1)검사 함수: 각 방향에 대해 현..

[백준] 23023 - 서프라이즈

문제 링크https://www.acmicpc.net/problem/23032문제 요약 연속된 학번의 학생 구간을 선택하고 두 그룹으로 나눠 각 그룹의 스테이크 무게 합의 차 E를 계산합니다.E가 최소가 되는 두 그룹의 스테이크 무게 합이 가장 큰 경우를 찾습니다.해당 경우의 스테이크 무게 합을 출력합니다. 푼 방법누적합 계산: presum 배열을 만들어 스테이크 무게의 누적합을 저장하여 특정 구간의 합을 빠르게 구합니다.구간 선택 및 이진 탐색:두 그룹의 스테이크 무게 합 차이를 최소화하기 위해 이진 탐색을 사용하여 구간의 중간 지점을 조절합니다.EEE가 최소인 경우를 찾으면서, 만약 EEE가 동일하면 두 그룹의 무게 합이 최대인 경우를 선택합니다. 정답 코드import sysn = int(sys.std..

[백준] 14676 영우는 사기꾼?

문제 링크https://www.acmicpc.net/problem/14676문제 요약게임 설명: '우주전쟁' 게임은 1대1 RTS 게임으로, 각 플레이어는 정해진 건설 순서에 따라 건물을 짓고 유닛을 생성합니다.건물 건설 순서: 특정 건물을 짓기 위해서는 선행 건물이 먼저 지어져야 합니다. 예를 들어, 건물 4번은 2번과 3번이 지어진 후에만 지을 수 있습니다.중복 건설 가능: 모든 건물은 여러 번 지을 수 있습니다.최대 영향 제한: 한 건물은 최대 3개의 다른 건물에만 영향을 미칩니다.치트키 사용 판별: 영우의 게임 기록에서 치트키를 사용했는지 확인하는 것이 목적입니다. 치트키는 특정 건물의 선행 조건이 충족되지 않았는데도 건물을 지을 수 있게 하며, 지어지지 않은 건물을 파괴하려고 하면 치트키로 간주..

[백준] 25635 - 자유 이용권

리스트의 max값보다 작은 값들의 합이 max값보다 크면 max를 어떻게든 다 소비시킬 수 있어서 총 합이 답이될 수 있고 ( max값을 소비시키면 그 max값이 없어진 리스트에서의 max는 무조건 나머지의 합보다 작을 수 밖에 없음)합이 max값보다 작으면 max를 모두 소비를 못시킴. 그래서 max값 제외한 수들의 * 2 후, 마지막 max값을 쓰는 +1을 해서 답 도출 가능문제 링크https://www.acmicpc.net/problem/25635문제 요약준원이는 놀이공원에서 연속으로 같은 놀이기구를 타지 않으면서 최대한 많이 탈 수 있는 횟수를 구하려고 합니다. 각 놀이기구에는 탈 수 있는 횟수 제한이 주어집니다. 준원이가 연속으로 같은 놀이기구를 타지 않고 최대 횟수를 달성할 때, 그 값은 얼마..

[백준] 5557 - 1학년

문제 링크https://www.acmicpc.net/problem/5557문제 요약1학년 상근이는 숫자가 주어졌을 때 마지막 숫자와 등호(=)를 사용하여 올바른 등식을 만들고 싶어 한다. 이때 각 숫자 사이에 덧셈(+) 또는 뺄셈(-) 연산을 넣어 연산을 수행해야 한다. 중간 계산 값은 0 이상 20 이하 범위에 있어야 하며, 이를 벗어나면 올바르지 않은 등식이 된다. 목표는 주어진 숫자 배열을 사용하여 상근이가 만들 수 있는 올바른 등식의 개수를 구하는 것이다.푼 방법DP(동적계획법)으로 풀었습니다. dp[i][j]는 i번째 숫자까지 계산했을 때 j의 값이 나올 수 있는 경우의 수를 의미한다.초기 조건으로 dp[0][nums[0]] = 1로 설정하여 첫 번째 숫자가 나올 수 있는 유일한 경우의 수를 반..

[백준] 14569 시간표 짜기

문제 링크https://www.acmicpc.net/problem/14569문제 요약친구들의 비어 있는 시간표에 과목을 추가할 수 있는 경우의 수를 세는 문제입니다.월요일 1~4교시를 차지하는 과목과 월요일 2~5교시를 차지하는 과목은 모두 후보가 될 수 있습니다.겹치는 시간이 있어도 상관없이 비어 있는 시간에 들어갈 수 있는 모든 과목을 후보로 포함합니다.푼 방법이 문제는 시간표를 효율적으로 관리하고 비어 있는 시간과 과목 시간을 빠르게 비교하기 위해 비트마스킹을 사용할 수 있습니다.비트마스킹을 사용하여 각 교시를 비트로 표현합니다. 예를 들어, 월요일 1~5교시가 비어 있다면 비어 있는 시간을 5비트로 표현할 수 있습니다.과목의 시간표도 같은 방식으로 비트로 표현하고, 비어 있는 시간과 AND 연산을..

[백준] 4179 - 불!

문제 링크문제 제목문제 요약미로에서 지훈이와 불이 각자 매 분마다 수평 또는 수직으로 한 칸씩 이동할 수 있는 상황에서, 지훈이가 불이 붙기 전에 미로의 가장자리에 도달해 탈출할 수 있는지 판단하고, 탈출이 가능하면 최소 탈출 시간을 출력해야 합니다. 만약 불이 더 빠르게 퍼지거나 지훈이가 탈출할 수 없는 경우, "IMPOSSIBLE"을 출력해야 합니다.푼 방법deque를 사용하여 불과 지훈이의 위치를 각각 관리하고 BFS 탐색으로 최단 시간을 계산합니다.불과 지훈이의 이동을 BFS로 처리해 매 분마다 확산과 이동을 동시에 수행하여 최단 시간을 계산합니다.훈이가 미로의 가장자리에 도달하면 탈출 시간을 출력, 불이 모든 공간을 확산하거나 이동 가능한 경로가 없으면 IMPOSSIBLE을 출력합니다. 정답 코..

728x90
반응형