Algorithm 18

구현 - 상하좌우

상하좌우 (Python)📝 문제 설명여행가 A 는 N * X 크기의 정사각형 공간 위에 서 있습니다.이 공간은 1 x 1 크기의 정사각형으로 나누어져 있습니다.가장 왼쪽 위 좌표는 (1,1)이며 가장 오른쪽 아래 좌표는 (N, N) 에 해당합니다.여행가 A 는 상, 하, 좌, 우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)입니다. 우리 앞에는 여행가 A 가 이동 할 계획이 적힌 계획서가 놓여 있습니다.계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L,R,U,D 중 하나의 문자가반복적으로 적혀 있습니다. 각 문자의 의미는 다음과 같습니다.L: 왼쪽으로 한 칸 이동R: 오른쪽으로 한 칸 이동U: 위로 한 칸 이동D: 아래로 한 칸 이동이때 여행가 A 가 N x N 크기의 정사각형 공간을 벗어..

그리디 알고리즘 - 모험가 길드

모험가 길드 (Python)📝 문제 설명한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 n명의 모험가를 대상으로'공포도'를 측정했는데, '공포도'가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서제대로 대처할 능력이 떨어집니다.모험가 길드장인 재석이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다.재석이는 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금합니다.N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 서의 최댓값을구하는 프로그램을 작성하세요예를 들어 N = 5 이고, 각 모험가의 공포도가 다음과 같다고 가정합시다.2 3 1 2 2이 경우 그룹 1에 공포도가 1,2,3인 모험가..

그리디 알고리즘 - 곱하기 혹은 더하기

곱하기 혹은 더하기 (Python)📝 문제 설명각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때,왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에'X' 혹은 '+' 연사자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를구하는 프로그램을 작성하세요.단, +보다 *를 먼저 계산하는 일반적인 방식돠는 달리,모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다.예를 들어 02984라는 문자열로 만들 수 있는 가장 큰 수는((((0 +2) * 9) * 8) * 4) = 576입니다.또한 만들어 질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록입력이 주어집니다.🔽 입력 예시s = 02984🔼 출력 예시576💡 문제 해결 접근s[0] 이 0 이나 1 일 때 더하고아닐..

그리디 알고리즘 - 1이 될때까지

1이 될때까지 (Python)📝 문제 설명어떠한 수 N이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여수행하려고 합니다.단, 두 번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있습니다.예를 들어 N이 17, K가 4라고 가정합시다. 이때 1번의 과정을 한 번 수행하면N = 16이 됩니다. 이후에 2번의 과정을 두 번 수행하면 N은 1이 됩니다.결과적으로 이 경우 전체 과정을 실행한 횟수는 3이 됩니다.이는 N을 1로 만드는 최소 횟수입니다.N과 K가 주어질 때 N이 1이 될 때 까지 1번 혹은 2번의 과정을수행해야 하는 최소 횟수를 구하는 프로그램을 작성하세요.📌 제한사항N2🔽 입력 예시N = 117K = 4🔼 출력 예시16💡 문제 해결 접근지문 대로 구현def solut..

그리디 알고리즘 - 거스름 돈

거스름 돈 (Python)📝 문제 설명당신은 음식점의 계산을 도와주는 점원입니다.카운터에는 거스름돈으로 500원, 100원, 50원, 10원짜리 동전이무한히 존재한다고 가정합니다.손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러 주어야 할동전의 최소 개수를 구하세요. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다.🔽 입력 예시N = 1440🔼 출력 예시6💡 문제 해결 접근def 거스름돈(N): cnt = 0 while N > 0: if N % 500 > 0 and N // 500 > 0: cnt += N // 500 N %= 500 elif N % 100 > 0 and N // 100 > 0: cn..

배열 비교하기

배열 비교하기 (Python)📝 문제 설명이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.📌 제한사항1 ≤ arr1의 길이 ≤ 1001 ≤ arr2의 길이 ≤ 1001 ≤ arr1의 원소 ≤ 1001 ≤ arr2의 원소 ≤ 100문제에서 정의한 배열의 대소관계가 일반적인 프로그래밍 언어에서 정의된 배열의 대..

배열의 길이에 따라 다른 연산하기

배열의 길이에 따라 다른 연산하기 (Python)📝 문제 설명한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.📌 제한사항1 ≤ arr의 길이 ≤ 1,0001 ≤ arr의 원소 ≤ 1,0001 ≤ n ≤ 1,000🔽 입출력 예arrnresult[49, 12, 100, 276, 33]27[76, 12, 127, 276, 60]------------ ------------ ------------------------------------ ------------ ------------[444, 555, 666, 777]100[444, 655, 666, 877]📖 입출력 예 설명예제 1번의 arr의 길이는 5로..

대소문자 바꿔서 출력하기

대소문자 바꿔서 출력하기 (Python)📝 문제 설명영어 알파벳으로 이루어진 문자열 str이 주어집니다.각 알파벳을 대문자는 소문자로, 소문자는 대문자로 변환해서 출력하는 코드를 작성하세요.🔽 입력 예시aBcDeFg🔼 출력 예시AbCdEfG💡 문제 해결 접근isupper() 를 쓰자str = input()print(''.join(list(map(lambda s: s.lower() if s.isupper() else s.upper(), list(str)))))🏆 정답 코드print(input().swapcase())🔥 느낀 점swapcase() 를 알게 됨