썸네일 [프로그래머스] 가장 많이 받은 선물(파이썬, 구현, 2024 KAKAO WINTER INTERNSHIP) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 1. 변수 설정 문제 설명에 위와 같이 주고받은 선물과 선물 지수를 표로 나타내주는데, 이걸 그래도 구현하면 됩니다! table은 주고받은 선물의 개수를 담을 2차원 리스트이고, gift_index는 선물지수를 저장할 리스트입니다. answer는 다음 달에 각각 받을 선물 개수를 담을 리스트이다. 즉, answer 리스트에 있는 최댓값이 정답이 됩니다. table = [[0 for _ in range(len(friends))] for __ in range(len(friends))] gift_..
썸네일 [프로그래머스] 문자열 계산하기 (Python, 문자열) 👩🏻‍💻 문제 https://school.programmers.co.kr/tryouts/85890/challenges 👩🏻‍💻 풀이 문자열로된 계산식이 "숫자(공백)연산자(공백)연산자.."로 매우 정형화되어있어 어렵지 않게 풀 수 있는 문제입니다. 계속 pop()해가면서 끝까지 계산! 👩🏻‍💻 코드 def solution()# !/usr/bin/python3 # -*- coding: utf-8 -*- # programmers 문자열 계산하기 def solution(my_string): str = my_string.split(" ") answer = int(str.pop(0)) while str: tmp = str.pop(0) if tmp == "+": answer += int(str.pop(0)) eli..
썸네일 [프로그래머스] 옹알이(1) (Python, 문자열) 🌱 문제 https://school.programmers.co.kr/tryouts/85889/challenges 🌱 풀이 babbling의 단어가 "aya", "ye", "woo", "ma"로 완벽하게 만들어질 수 있어야 하므로 맨 앞부터 4개의 옹알이 중 하나라도 일치하는 것이 있는지 검사합니다. 검사하면서 4개의 옹알이 중 하나와 일치하는데, 남은 글자가 해당 옹알이의 글자 수와 일치한다면 babbling의 단어가 4개의 옹알이 단어들로 모두 만들어진다는 것을 의미하므로 answer를 1 증가시킵니다. 🌱 코드 # !/usr/bin/python3 # -*- coding: utf-8 -*- # programmers 옹알이 def solution(babblings): answer = 0 for babbl..
썸네일 [프로그래머스] 공원 산책 (Python) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 이 문제는 단순 구현 문제로, 문제에서 요구하는 설명을 그대로 코드로 작성하면 해결할 수 있는 문제입니다. 우선, S의 위치를 저장합니다. 이동하는 명령들(routes)을 하나씩 돌면서 해당 명령을 수행할 수 있는지 검사합니다. 해당 명령을 수행할 수 있는지 검사할 때에는 한 칸씩 이동하며 범위를 벗어나지 않는지, 장애물이 있지 않은지 검사해야 하기때문에, 한칸씩 이동하는 좌표값을 저장할 수 있는 변수(nx, ny)를 사용하였습니다. 중간에 break되지 않고 해당 명령을 끝까지 수행할 수 ..
썸네일 [Programmers] 단어 변환 (Python, BFS) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 1. 해당 단어에서 바꿀 수 있는 단어 리스트 만들기 (그래프 만들기) BFS 탐색을 할 것이기 때문에 현재 위치(현재 단어)에서 갈 수 있는(한글자 바꿀 수 있는) 위치를 담은 리스트(노드간 연결 정보를 담은 그래프)를 만들어야 합니다. 예를 들어, 단어 리스트가 hot, dot, dog, log, log, cog일 때, 그래프에는 아래와 같이 저장되어야 합니다. # 해당 단어에서 갈 수 있는 단어 정보 저장 (그래프 만들기) for i in range(len(words)): word1 =..
썸네일 [Programmers] 네트워크(BFS/DFS 풀이 | Python) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 전형적인 DFS 알고리즘을 이용해서 푸는 문제입니다. 0. 변수 초기화와 그래프 정보 visited = [False for _ in range(n + 1)] graph = [[] for _ in range(n + 1)] answer = 0 for i in range(len(computers)): for idx, val in enumerate(computers[i]): if i != idx and val == 1: graph[i + 1].append(idx + 1) 인접 행렬 방식으로 주어진 ..
썸네일 [프로그래머스] 두 큐의 합 같게 만들기 | 파이썬 덱과 리스트의 연산 속도 차이 | LV2, python, 2022 KAKAO TECH INTERNSHIP 프로그래머스의 '두 큐의 합 같게 만들기' 문제입니다. 두 큐의 합이 같아질 때까지 push, pop을 해야 하는 최소 연산 개수를 구하는 문제입니다. 합이 더 큰 큐에서 pop하여 더 작은 큐로 push 해주는 것을 두 큐의 합이 같아질 때까지 반복하면 됩니다. 이때, 연산 개수가 전체 숫자의 개수 * (3/2)가 넘어가면 결국 두 개의 큐가 원래 상태로 되돌아 오기 때문에 합을 절대로 같게 만들 수 없다는 의미입니다. 이 때는 -1을 리턴하고 같아질 때까지 push pop 연산을 하며 연산 횟수만 1씩 늘려가주면서 최종적으로 연산 횟수를 리턴해주면 됩니다. 알고리즘 자체는 간단한데, 계속 시간 초과가 났습니다. 처음에는 while문을 반복할 때마다 큐의 합을 sum() 함수로 계속 새로 계산해주었습니..