본문 바로가기
[LeetCode][316] 스택, 재귀를 이용해 다시 풀 문제 https://leetcode.com/problems/remove-duplicate-letters/description/ Remove Duplicate Letters - LeetCode Remove Duplicate Letters - Given a string s, remove duplicate letters so that every letter appears once and only once. You must make sure your result is the smallest in lexicographical order among all possible results. Example 1: Input: s = "bcabc" Outp leetcode.com 추후에 다시 풀어볼 문제로 정리하고자 포스팅 2023. 1. 13.
[백준][14888][Python] 파이썬에서 음수 나눗셈에 대해, // https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 문제 자체는 평이하며 브루트포스와 백트랙킹을 활용하면 풀 수 있다. 이 포스팅에서는 문제 자체에 대한 풀이는 다루지 않도록 한다. 이 문제를 따로 포스팅하는 이유는 파이썬의 나눗셈 연산에 대한 의문을 해소하기 위해서이다. 위의 문제는 숫자들을 사칙연산을 해야 하는데 더하기, 빼기, 곱하기는 +, -, * 와 같이 익히 알고 있는 연산자를 쓰면.. 2023. 1. 12.
[백준][2661] 백트랙킹 https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net import sys def check(res): for i in range(1, len(res)//2+1): if res[-i*2:-i] == res[-i:]: return True return False def backtracking(L, res): global result if check(res): return if L == n: print(res) sys.exit(0) else: for i in rang.. 2023. 1. 9.
[백준][14889] Combinations을 이용한 풀이 https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 문제에 대한 이해: 선수들의 번호를 통해 주어진 행렬M에서 선수의 능력치를 찾을 수 있다. 1, 2, 4 번의 선수가 한 팀에 속한다면 해당 팀의 능력치는 M[1,2] + M[1, 4] + M[2, 1] + M[2, 4] + M[4, 1] + M[4, 2], 즉 1, 2, 4로 이룰 수 있는 원소의 수가 2개인 모든 집합에서 첫번째 원소를 행, 두번째 원소를 열로 보고 찾은 수의 합이다. 1번이 2번과 협업할 때, 2.. 2023. 1. 5.
[프로그래머스][옹알이] 재귀를 이용한 풀이 https://school.programmers.co.kr/learn/courses/30/lessons/120956?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 대한 이해: 4개의 문자열로 이루어진 리스트 E가 "aya", "ye", "woo", "ma"가 주어진다. 입력값 리스트 L이 주어졌을 때 L에서 E에 있는 문자열로'만' 이루어진 원소 l이 몇 개인지 구하라. 문제풀이: 재귀함수를 이용한다. l은 모두 E에 속한 원소들로만 이루어진 문자열이어야 한다. 따라서 1) 문자열 l의 0번 인덱스부터 'a', 'y'.. 2023. 1. 5.
[백준][2798] 브루트포스, Combinations을 이용한 풀이 https://www.acmicpc.net/problem/2798 문제에 대한 이해: 다수의 카드에서 3개의 카드만 뽑아 카드에 적힌 수를 합한다. 세 개의 카드에 적힌 수의 합은 T, 이 합들만 보아놓은 집합을 S이라고 부르도록 한다. S에 속한 T들은 M과 같거나 작아야 한다. M과 같은 T가 있다면 M(=T)를 리턴하고, M보다 작은 T들 중에서 가장 M과 근소한 T를 리턴한다. 근소하다는 것은 M-T이 가장 작다는 것을 의미한다. 문제유형: 카드 세 개를 뽑을 경우의 수를 브루트포스로 추출한다. 이렇게 모든 조합을 찾아야할 경우 Python에서 지원하는 combinations를 쓰면 편리하다. combinations는 주어진 자료형 안에 있는 원소로 만들 수 있는 모든 조합을 구해준다. from .. 2022. 12. 28.
[LeetCode] 1491. Average Salary Excluding the Minimum and Maximum Salary LeetCode: 1491. Average Salary Excluding the Minimum and Maximum Salary You are given an array of unique integers salary where salary[i] is the salary of the ith employee. Return the average salary of employees excluding the minimum and maximum salary. Answers within 10-5 of the actual answer will be accepted. 주어진 배열에서 최댓값과 최소값을 제외하고 평균을 구하는 문제이다. 성능을 생각해 max와 min, sum 함수를 사용하지 않고 풀어보았다. def ave.. 2022. 9. 18.
[LeetCode]1523. Count Odd Numbers in an Interval Range LeetCode: 1523. Count Odd Numbers in an Interval Range Given two non-negative integers low and high. Return the count of odd numbers between low and high (inclusive) 두 정수 low와 high 사이의 수 중에 있는 홀수의 개수를 구하는 문제이다. 홀수를 찾는 범위에는 higt가 포함된다. low가 3, high가 7이라면 홀수를 찾는 범위는 4, 5, 6, 7(high)가 된다. 처음에는 for문을 사용하여 2로 나누었을 때 나머지가 1인 수들의 개수를 세려고 했다. def countOdds(self, low: int, high: int) -> int: cnt = 0 for .. 2022. 9. 17.
Spring boot 프로젝트 AWS 배포 오류 해결기록(8) 1. 문제점: Permission Denied 이번 프로젝트를 배포할 때 가장 시간을 오래 끌었던 문제가 이 Permission Denied 에러였다. 무엇 때문에 어디에 접근하는 권한이 거절되었는지 확인하기 위해 vim nohup.out 명령어를 입력해 로그를 확인해보았다. 데이터베이스가 있는 url 자체를 찾지 못한다고 한다. application.properties는 ec2에 올려져 있었고 같은 똑같은 application.properties 내용으로 로컬에서 실행할 때는 별 문제가 없었는데 서버에서 실행하니 url이 지정되어 있지 않아 DataSource를 설정할 수 없다고 한다. application.properties에는 spring.datasource이라는 prefix가 붙은 채로 url과 .. 2022. 9. 16.
for 문을 사용하지 않고 홀수의 개수 구하기 수의 성질을 이용하여 두 정수의 사이에 있는 홀수의 개수 구하기 반복문을 사용할 경우 생기는 문제 일반적으로 for 반복문을 이용해 범위 안에 있는 모든 숫자를 세는 방법을 많이 사용하지만 수의 범위가 너무 넓을 경우 시간이 지나치게 오래 걸리는 문제가 생긴다. 대안 따라서 정수로 시작값과 끝값이 정해진 경우에는 홀수의 개수를 구할 수의 성질을 이용해서 간단한 사칙연산으로 두 수 사이의 정수를 구할 수 있다. 어려울 것 같지만 굉장히 간단하다. 전제 수의 범위는 시작값은 포함하지 않고 끝값은 포함하는 것으로 전제한다. 시작값은 초과하고 끝값의 이하이다. 예를 들어 3과 8이 주어졌다면 홀수를 찾은 값의 범위는 4, 5, 6, 7, 8이 되고 범위에 있는 수의 개수 N은 5가 된다. 즉, 끝값 - 시작값이.. 2022. 9. 15.