목록개발이야기/PS - Problem Solving, 알고리즘 (43)
준호씨의 블로그
문제: https://www.hackerrank.com/challenges/mini-max-sum/problem 5개의 양의 정수로 이루어진 배열이 있습니다. 4개의 숫자를 더해서 가장 작은 합과 가장 큰 합을 구하는 문제입니다. 간단히 생각해 보면 정렬한 다음 처음부터 4번째까지의 합과, 두 번째부터 마지막까지의 합을 구하면 됩니다. #!/bin/python3 import math import os import random import re import sys # Complete the miniMaxSum function below. def miniMaxSum(arr): sorted_arr = sorted(arr) print(sum(sorted_arr[:4]), sum(sorted_arr[1:])) i..
문제: https://www.hackerrank.com/challenges/staircase/problem HackerRank Problem Solving 첫번째 문제인 Staircase 입니다. 입력값이 4일 때 아래처럼 나오는 것입니다. # ## ### #### 프로그래밍 처음배울때 과제로 나오던 문제같이 생겼네요. 일단 n줄 만큼 출력해야 되니 n만큼 loop를 돌립니다. 그리고 내부에서도 n칸 만큼 채워넣어야 합니다. 다만 첫번째 줄에는 마지막 하나만 #이고 앞에는 스페이스입니다. 두번째 줄에는 마지막 두개만 #이고 앞에는 스페이스이죠. 마지막 줄에는 n개 만큼 #으로 모두 채워줍니다. loop안의 loop에서 n-i-1만큼은 공백을 출력하고 나머지는 #을 출력해 주면 됩니다. #!/bin/pyt..
문제: https://leetcode.com/explore/challenge/card/30-day-leetcoding-challenge/528/week-1/3285/ 정수배열 nums가 있습니다. 인접한 숫자들로 부분배열을 만들었을 때, 이 부분 배열들의 합 중 가장 큰 합을 구하는 문제입니다. Example: Input: [-2,1,-3,4,-1,2,1,-5,4], Output: 6 Explanation: [4,-1,2,1] has the largest sum = 6. 우선 brute force 하게 구현해 볼 수 있습니다. 모든 부분배열의 합 중 가장 큰 값을 찾으면 됩니다. class Solution: def maxSubArray(self, nums): result = nums[0] len_num ..
https://leetcode.com/explore/challenge/card/30-day-leetcoding-challenge/528/week-1/3284/ 숫자 n이 "happy"인지 확인하는 알고리즘을 작성하십시오. happy number는 다음 프로세스에 의해 정의된 숫자입니다. 양의 정수로 시작하여 숫자를 제곱의 제곱의 합계로 바꾸고 숫자가 1 (있을 때) 또는 반복될 때까지 프로세스를 반복하십시오. 이 과정이 1로 끝나는 숫자가 happy number입니다. n이 happy number이면 True, 아니면 False를 반환합니다. Example: Input: 19 Output: true Explanation: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 ..
https://leetcode.com/explore/challenge/card/30-day-leetcoding-challenge/528/week-1/3283/ 정수 배열에서 숫자 하나 빼고는 모두 두 번씩 나옵니다. 한 번만 나오는 숫자를 찾으세요. 노트: 알고리즘은 선형 런타임 복잡성을 가져야 합니다. 여분의 메모리를 사용하지 않고 구현할 수 있을까요? Example 1: Input: [2,2,1] Output: 1 Example 2: Input: [4,1,2,1,2] Output: 4 첫 번째 문제인 만큼 난이도는 쉽습니다. 푸는 방법도 다양할 거 같네요. 노트에 적혀 있는 여분의 메모리를 사용하지 않고 구현한다니 그건 좀 쉽지 않아 보이네요. 간단하게 구현해 보았습니다. class Solution:..