전체 글 15

[백준 / 파이썬] 1074번: Z

1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline def Z(n: int, r: int, c: int): """_summary_ Args: n (int): 2^n r (int): row c (int): col Returns: _type_: r행 c열을 몇 번째로 방문 """ # 종료 조건 if n == 0: return 0 half = 2 ** (n-1) subarray = (r >= half) * 2 + (c >= half..

Algorithm 2023.07.31

[백준 / 파이썬] 9663번: N-Queen

9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 코드 import sys input = sys.stdin.readline def dfs(row, post): global answer # 종료 조건 if row == n: answer += 1 return # 열 탐색 for col in range(n): # 행, 열 확인 if not d1[row + col] and not d2[row + n - 1 - col] and not visited[col]: visited[col] = True d1[row + col] = True..

Algorithm 2023.07.31

[프로그래머스 / 파이썬] 두 큐 합 같게 만들기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(queue1, queue2): queue3 = queue1 + queue2 target = sum(queue3) // 2 if sum(queue3) % 2 != 0: return -1 queue = queue1 + queue2 + queue1 max_count = len(queue) answer, left, right, sum_value = 0, 0, len(queue1), sum(queue1) while answer target: sum_value -= queue[left]..

Algorithm 2023.07.31

[프로그래머스 / 파이썬] 신고 결과 받기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(id_list, report, k): answer = [] # id별 mail 받을 횟수 id_dict = {} for i in id_list: id_dict.setdefault(i, 0) # 신고 받은 횟수 report_count_dict = id_dict.copy() # 신고자, 신고받은 사람 report_person_dict = {} # 중복 신고 삭제 report = list(set(report)) for i in report: reporter, reported = i..

Algorithm 2023.07.29

[프로그래머스 / 파이썬] 이모티콘 할인행사

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 data = [10, 20, 30, 40] discount = [] def dfs(temp, depth): if depth == len(temp): discount.append(temp) return for d in data: temp[depth] += d dfs(temp, depth + 1) temp[depth] -= d def solution(users, emoticons): max_users = 0 max_price = 0 dfs([0] * len(emoticons), 0) for d in r..

Algorithm 2023.07.28

[ Front-End ] 디자인 패턴

디자인 패턴 디자인 패턴은 소프트웨어의 개발 방법을 공식화한 것으로 소프트웨어 개발에서 반복적으로 발생하는 문제에 대한 해결책을 정형화한 형태의 설계 템플릿이자, 개발자들 간의 커뮤니케이션의 효율성을 높이는 기법이다. MVC 패턴 MVC (Mode-View-Controller) 패턴은 소프트웨어 개발에서 사용되는 아키텍처 패턴 중 하나로, 애플리케이션을 세 가지 주요 구성 요소로 분리하여 개발하는 방법입니다. 각 구성 요소는 특정한 역할을 수행하며, 애플리케이션의 코드를 조직화하고 유지 보수하기 쉽게 만듭니다. Model Model은 데이터와 비즈니스 로직을 관리하는 역할을 담당합니다. 데이터는 애플리케이션의 상태나 정보를 나타내며, 비즈니스 로직은 데이터를 처리하고 조작하는 데 사용됩니다. Model은..

Experience 2023.07.14

[프로그래머스 / 파이썬] 양과 늑대

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(info, edges): def dfs(sheep, wolf): if sheep > wolf: global answer answer = max(answer, sheep) else: return for parent, child in edges: if visited[parent] and not visited[child]: visited[child] = True if info[child] == 0: dfs(sheep+1, wolf) else: dfs(sheep, wolf+1) vi..

Algorithm 2023.07.14

[프로그래머스 / 파이썬] 택배 배달과 수거하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(cap, n, deliveries, pickups): answer = 0 delivery = 0 pickup = 0 for i in range(n-1, -1, -1): if deliveries[i] != 0 or pickups[i] != 0: while delivery < deliveries[i] or pickup < pickups[i]: delivery += cap pickup += cap answer += (i + 1) * 2 delivery -= deliveries[i]..

Algorithm 2023.07.14

[프로그래머스 / 파이썬] 미로 탈출 명령어

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 코드 def solution(n, m, x, y, r, c, k): answer = '' dist = abs(x - r) + abs(y - c) k -= dist if k r: direction['u'] += x - r else: direction['d'] += r - x if y > c: direction['l'] += y - c else: ..

Algorithm 2023.07.13