본문 바로가기

프로그래밍/알고리즘126

프로그래머스 - 푸드 파이트 대회 파이썬 코드 def solution(food): answer = '' for i in range(1, len(food)): answer += str(i)*(food[i]//2) return answer +'0'+ answer[::-1] 가운데 0을 기준으로 오름차순, 내림차순을 해야하나 고민했는데 각 만들어서 더하는 방식으로 해결했다 아예 answer에 절반씩만 할당하는 방법을 사용했다 마지막 줄을 아래와 같이 써도 문자열이 뒤집에서 잘 표현이 된다 "".join(reversed(문자열)) 문제 2023. 2. 13.
이코테 그래프이론 파이썬 팀 결성 A. 문제 학생에게 0부터 N번까지 번호를 부여했다.모든 학생이 서로 다른 팀으로 구분되어 총 N+1개의 팀이 존재한다.팀 합치기 연산과 같은 팀 여부 확인 연산을 사용할 수 있다. 팁 합치기두 팀을 합치는 연산같은 팀 여부 확인특정 두 학생이 같은 팀에 속하는지 확인 a. 입력 조건 첫째줄에 N, M1 4번 -> 3 번이라고 해보자. 이 경우 2번 -> 3번 -> 2번 -> 4번 -> 2번 -> 3번의 순서로 여행지를 방문하면, 여행 계획을 따를 수 있다. b. 입력 조건 첫째 줄에 여행지의 수 N과 여행 계획에 속한 도시의 수 M이 주어진다.1 2023. 2. 12.
이코테 최단경로 파이썬 미래 도시 A. 문제 방문 판매원 A는 공중 미래 도시에 있다.공중 미래 도시에는 1번부터 N번까지의 회사가 있는데 특정 회사끼리는 서로 도로를 통해 연결되어 있다.방문 판매원 A는 현재 1번 회사에 위치해 있으며, X번 회사에 방문해 물건을 판매하고자 한다. 공중 미래 도시에서 특정 회사에 도착하기 위한 방법은 회사끼리 연결되어 있는 도로를 이용하는 방법이 유일하다. 연결된 2개의 회사는 양방향으로 이동할 수 있다.특정 회사와 다른 회사가 도로로 연결되어 있다면 정확히 1만큼의 시간으로 이동할 수 있다. 오늘 방문 판매원 A는 소개팅에 참석하고자 한다. 소개팅 상대는 K번 회사에 존재한다. 방문 판매원 A는 X번 회사에 가서 물건을 판매하기 전에 먼저 소개팅 상대의 회사에 찾아가서 함께 커피를 마실 예.. 2023. 2. 12.
이코테 DP 파이썬 1로 만들기 A. 문제 정수 X가 주어진다.정수 X에 다음 4가지 연산을 사용할 수 있다. X가 5로 나누어떨어지면, 5로 나눈다X가 3로 나누어떨어지면, 3으로 나눈다X가 2로 나누어떨어지면, 2로 나눈다X에서 1을 뺀다 정수 X가 주어졌을 때, 연산 4개를 적절히 사용하여 1을 만든다. 이때 연산을 사용하는 횟수의 최솟값을 구하라. a. 예를 들면. 정수 26이면, 산을 사용하는 횟수의 최솟값이 3이다. 26 - 1 = 25 (4)25 / 5 = 5 (1)5 / 5 = 1 (1) b. 입력 조건 첫째 줄에 정수 X가 주어진다.1 2023. 2. 12.
이코테 이진탐색 파이썬 부품 찾기 A. 문제 우리 매장에는 부품이 N개 있다. 각 부품은 정수 형태의 고유한 번호가 있다. 손님이 M개 종류의 부품을 대량으로 구매하겠다며 견적서를 요청한다. 손님이 문의한 부품 M개 종류를 모두 확인해서 견적서를 작성해야 한다. 이때, 가게 안에 부품이 모두 있는지 확인하는 프로그램을 작성하자. 이때, 손님이 요청한 부품 번호의 순서대로 부품을 확인해 부품이 있으면 yes, 없으면 no를 공백으로 구분하여 출력한다. b. 입력 조건 첫째 줄에 정수 N이 주어진다.1 2023. 2. 12.
이코테 정렬 파이썬 위에서 아래로 A. 문제 하나의 수열에 다양한 수가 존재한다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오. a. 입력 조건 첫째 줄에 수열에 속해 있는 수의 개수 N이 주어진다1 2023. 2. 12.
이코테 DFS/BFS 파이썬 음료수 얼려 먹기 A. 문제 N*M 크기의 얼음 틀이 있다. 구멍이 뚤려 있는 부분은 0, 칸막이가 1로 표시된다. 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. 00110 00011 11111 00000 일때 아이스크림은 총 3개 생성된다. b. 입력 조건 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다(1 = 0 and ny < m: if temp[nx][ny] == 0: # 해당 위치에 바이러스 배치하고, 다시 재귀적으로 수행 temp[nx][ny] = 2 virus(nx, ny) # 현재 맵에서 안전 영역의 크기 계산하는 메서드 def get_score(): score = 0 for i.. 2023. 2. 12.
이코테 구현 파이썬 왕실의 나이트 A. 문제 8 x 8 좌표평면. 나이트는 L자 형태로만 이동할 수 있고, 정원 밖으로 나갈 수 없다. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 행 위치는 1~8로 표현하고, 열 위치는 a~h로 표현한다. 나이트가 이동할 수 있는 경우의 수를 출력하라. a. 예를 들면. 나이트의 위치가 a1일 때 이동할 수 있는 경우의 수는 2가지다.오른쪽으로 두 칸 이동 후 아래로 한 칸 이동하기 (c2)아래로 두 칸 이동 후 오른쪽으로 한 칸 이동하기 (b3) b. 입력 조건 첫째 줄에 8x8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 문자는 a1과 같이 열행으로 이뤄진다. c. 출력 조.. 2023. 2. 12.
이코테 그리디 파이썬 큰 수의 법칙 A. 문제 다양한 수로 이루어진 배열을 M번 더하여 가장 큰 수를 만든다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없다. 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. N은 배열의 크기, M은 숫자가 더해지는 횟수, K는 연속해서 더할 수 있는 횟수. a. 예를 들면. [2, 4, 5, 4, 6] 배열, M = 8, K = 3은 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 = 46 이다.[3, 4, 3, 4, 3] 배열, M = 7, K = 2은 4 + 4 + 4 + 4 + 4 + 4 + 4 = 28 b. 입력 조건 첫번째 줄에 N (2 2023. 2. 12.