📌문제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] =..
📌문제각 자리가 숫자로만 이루어진 문자열 S가 주어졌을 때 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 X 혹은 + 연산자를 넣어 결과적으로 만들어 질 수 있는 가장 큰 수를 구하는 프로그램을 작성하시오.모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정 📌풀이대부분은 +보다 x 연산이 값을 더 크게 만듦하지만 두 수 중에서 하나라도 0이나 1인 경우 곱하기 보다 더하기 수행하는 것이 효율적 📌코드data = input()# 첫번째 문자를 숫자로 변경하여 대입result = int(data[0])for i in range(1, len(data)): # 두 수 중 하나라도 0 혹은 1인 경우 더하기 num = int(data[i]) if result 📌참고https..
📌문제한 마을에 모험가 N명이 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 공포도를 측정했는데 공포도가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 대처 능력이 떨어집니다. 모험가 길드장이 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여하도록 규정했습니다. N명의 모험가 정보가 주어졌을 때 여행을 떠날 수 있는 그룹 수의 최댓값을 구하는 프로그램을 작성하세요. 📌풀이공포도를 오름차순으로 정렬공포도가 낮은 모험가부터 하나씩 확인하며 만약 현재 그룹에 포함된 모험가 수가 현재 확인하고 있는 공포도보다 크거나 같다면 그룹 결성 📌코드n = int(input())data = list(map(int, input().split()))data...