📌문제https://school.programmers.co.kr/learn/courses/30/lessons/60062 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌풀이원형으로 나열된 데이터를 처리하는 경우에는 문제 풀이 간단히 하기 위해 길이를 2배로 늘려서 원형을 일자 형태로 만듦 📌코드def solution(n, weak, dist): #길이를 2배로 늘려서 원형을 일자 형태로 변형 length=len(weak) for i in range(length): weak.append(n+weak[i]) answer=len(dist)+1 #투입할 친구 수의 최솟값..
📌문제뱀이 나와서 기어 다니는데 사과를 먹으면 뱀 길이가 늘어나는 게임이 있다. 뱀이 기어다니다가 벽 또는 자기 자신의 몸과 부딪히면 게임이 끝납니다.게임은 NxN 정사각 보드 위에서 진행되고 몇몇 칸에 사과가 놓여졌다. 보드의 상하좌우 끝에는 벽이 있다. 게임을 시작할 때 뱀은 맨 위 좌측에 위치하고 뱀의 길이는 1이다. 뱀은 처음에 오른쪽을 향한다.뱀은 매 초마다 이동하는데 다음과 같은 규칙을 따른다.-먼저 뱀은 몸 길이를 늘려 머리를 다음 칸에 위치시킨다.-만약 이동한 칸에 사과가 있다면 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다-만약 이동한 칸에 사과가 없다면 몸 길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸 길이는 변하지 않는다.사과의 위치와 뱀의 이동 경로가 주어질 때 이 ..
📌문제https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌풀이열쇠를 적당히 회전하고 이동시켜 자물쇠의 홈에 맞게 끼워 넣는 것자물쇠의 크기의 3배인 새로운 리스트를 만들어 중앙 부분으로 옮김자물쇠 리스트의 값에 열쇠 리스트의 값을 더한 뒤에 더한 결과가 자물쇠 부분의 모든 값이 1인지 확인 📌코드#2차원 리스트 90도 회전def rotate_a_matrix_by_90_degree(a): n=len(a) #행 길이 m=len(a[0]) #열 길이 result=[[0]*n f..
📌문제https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌풀이길이가 N인 문자열 입력되었다면 1부터 N/2까지의 모든 수를 단위로 하여 문자열을 압축하는 방법을 모두 확인하고 가장 짧게 압축되는 길이 출력 📌코드def solution(s): answer = len(s) #1개 단위부터 압축 단위를 늘려가며 확인 for step in range(1, len(s)//2+1): compressed="" prev=s[0:step] #앞에서부터 step만큼..
📌문제알파벳 대문자와 숫자(0~9)로만 구성된 문자열이 입력으로 주어집니다. 이때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다. 📌풀이문자를 하나씩 확인한 뒤, 숫자는 따로 합계를 구하고, 알파벳은 별도의 리스트에 저장알파벳 리스트를 오름차순 정렬한 뒤에 합계를 맨 뒤에 붙임 📌코드data = input()result = []value = 0# 문자를 하나씩 확인for i in data: # 알파벳인 경우 리스트에 삽입 if i.isalpha(): result.append(i) # 숫자인 경우 따로 더하기 else: value += int(i)# 알파벳 리스트를 오름차순 정렬result.so..
📌문제게임의 아웃복서 캐릭터는 럭키 스트레이트 기술이 있다. 이 기술은 매우 강력한 대신에 게임 내에서 점수가 특정 조건을 만족할 때만 사용할 수 있다.현재 캐릭터의 점수를 N이라고 할 때 자릿수를 기준으로 점수 N을 반으로 나누어 왼쪾 부분의 각 자릿수의 합과 오른쪽 부분의 각 자릿수의 합을 더한 값이 동일한 상황을 의미한다.현재 점수 N이 주어지면 럭키 스트레이트를 사용할 수 있는 상태인지 아닌지 알려주는 프로그램을 작성하시오. 📌풀이문자열에서 각 문자를 하나씩 확인하며 정수형으로 변환자릿수로 구분하여 합을 계산 📌코드n = input()length = len(n) # 점수값의 총 자릿수summary = 0# 왼쪽 부분 자릿수 합for i in range(length // 2): summ..
📌문제https://school.programmers.co.kr/learn/courses/30/lessons/42891 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 📌풀이모든 음식을 시간 기준으로 정렬시간이 적게 걸리는 음식부터 제거해나가는 방식최소값을 빠르게 추출하기 위해 우선 순위 큐 사용📌코드import heapqdef solution(food_times, k): #전체 음식을 먹는 시간의 합보다 k가 크거나 같다면 -1 if sum(food_times) 📌참고https://g.co/kgs/eyd5SSd 이것이 취업을 위한 코딩 테스트다 with 파이썬IT 취준생이라면 누구나 ..
📌문제A,B 두 사람이 볼링을 치고 있다. 두 사람은 서로 무게가 다른 볼링공을 고르려 한다. 볼링공은 총 N개가 있고 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여된다. 또한 같은 무게의 공이 여러개 있을 수 있지만 서로 다른 공으로 간주한다. 볼링공의 무게는 1~M까지 자연수 형태로 존재한다.N개의 공의 무게가 각각 주어질 때 두 사람의 볼링공을 고르는 경우의 수를 구하시오. 📌풀이무게마다 볼링공이 몇개 있는지 계산A가 특정 무게의 볼링공 선택했을 때 B가 볼링공을 선택하는 경우를 차례대로 계산 📌코드n, m = map(int, input().split())data = list(map(int, input().split()))# 1~10까지 무게 담을 수 있는 리스트arra..
📌문제동네 편의점 주인은 N개의 동전을 가지고 있다. 이때 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 📌풀이화폐 단위를 기준으로 오름차순 정렬 후 1부터 차례대로 특정 금액 만들 수 있는지 확인 📌코드n = int(input())data = list(map(int, input().split()))data.sort()target = 1for x in data: # 만들 수 없는 금액 찾으면 반복 종료 if target 📌참고https://g.co/kgs/eyd5SSd 이것이 취업을 위한 코딩 테스트다 with 파이썬IT 취준생이라면 누구나 입사하고 싶은 카카오・삼성전자・네이버・라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다! IT 취..
📌문제다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 0을 1로 1을 0으로 바꾸는 것을 의미한다.문자열 S가 주어졌을 때 다솜이가 해야하는 행동의 최소 횟수를 출력하시오. 📌풀이전부 0으로 바꾸는 경우, 전부 1로 바꾸는 경우 중 더 적은 횟수를 가지는 경우 계산리스트를 앞에서부터 확인하며 0에서 1로 변경하거나 1에서 0으로 변경하는 경우를 확인 📌코드data = input()count0 = 0 # 전부 0으로 바꾸는 경우count1 = 0 # 전부 1로 바꾸는 경우# 첫번째 원소에 대해 처리if data[0] =..