Algorithm(12)
-
빗물 트래핑
https://leetcode.com/problems/trapping-rain-water/ Trapping Rain Water - LeetCode Trapping Rain Water - Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it can trap after raining. Example 1: [https://assets.leetcode.com/uploads/2018/10/22/rainwatertrap.png] Input: he leetcode.com 주어진 height를 가지고 해당 블럭들 안에 물이 고인다면 최대 얼만큼의 물이 고일 수..
2023.01.17 -
세 수의 합
배열을 입력받아 합으로 0을 만들 수 있는 3개의 엘리먼트를 출력하라 https://leetcode.com/problems/3sum/ 3Sum - LeetCode 3Sum - Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0. Notice that the solution set must not contain duplicate triplets. Example 1: Input: nums leetcode.com 예제 1. 입력 nums = [-1, 0, 1, 2, -1, -4] 출력 ..
2023.01.17 -
두 수 더하기
덧셈을 통하여 target을 만들 수 있는 배열 원소의 인덱스 두개를 리턴하라라는 문제입니다. 예제 1. nums = [2, 7, 11, 15] taget = 9 매우 쉽다. 하나하나 다 탐색하며 진행하면 된다. 풀이 # 덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라. nums = [2, 7, 11, 15] taget = 9 # 브루트 포스 방식 def twoSum(nums, target): for i in range(len(nums)): for j in range(i + 1, len(nums)): if nums[i] + nums[j] == target: return [i, j] print(twoSum(nums, taget)) 2부터 시작하여 하나하나 더해보며 target과 맞는지 찾으..
2023.01.17 -
백준: 더하기 싸이클
https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 해당 문제는 숫자의 십의자리 일의자리를 더해 주면서 기존의 숫자와 동일하게 될때까지 몇번의 전환 작업이 필요하다. 기존엔 str(), split() 함수를 사용해 하였지만 시간초과로 인하여 수행되지 않는다. 이후 변경된 코드이다 풀이 n = int(input()) num = n cnt = 0 while True: tens = num // 10 units = num % 10 newUn..
2023.01.15 -
백준: 소수 찾기
https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 소수 구하기랑은 다른 문제로 이력 받은 수들 중 소수가 몇개인지 확인해야한다. 풀이 n = int(input()) # 입력받을 숫자의 개수 nums = list(map(int, input().split(' '))) # 공백으로 숫자 구분. ex) 1 3 5 7 primeCount = 0 # 소수의 개수 for i in nums: cnt = 0 if i == 1: # 1은 소수가 아니기 때문에 건너띔 continue for j in range(2, i+1): if i..
2023.01.15 -
백준: 소수 구하기
https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 소수를 구하는 식을 표현하는건 쉽다. 하지만 해당 문제의 N의 최대 범위가 100만 까지 들어올 수 있고 시간제한이 2초이기 때문에 시간 복잡도는 O(n^2)이 넘어가서는 안된다. 본인도 처음에 이중 포문을 활용하였지만 수정을 아무리 하여도 시간초과에 막혔었다. 알고보니 에라토스테네스의 체라는 공식을 적용해야 통과할 수 있는 문제였다. 에라토스테네스의 체는 소수를 판별할 범위만큼 배열을 할당하여, 해당하는 값을 넣어주고, 이후에..
2023.01.15