https://www.acmicpc.net/problem/11722 11722번: 가장 긴 감소하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 감소하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 30, 10, 20, 20, 10} 인 경우에 가장 긴 감소하는 부분 수열은 A = {10, 30, 10, 20, 20, 10} www.acmicpc.net 해결한 코드는 간단하지만, dp를 떠올리는데 시간이 좀 걸렸다. 인덱스를 하나씩 늘려가며 그 이전의 값들을 검사하여 감소할 때, dp[i]와 dp[j]+1을 비교하여 더 큰 값을 넣는 방식으로 구현하였다. dp 공부를 더 해야겠다... # 가장 긴 감소하는 부분 수열 import sys input = sys.stdin.re..
https://www.acmicpc.net/problem/1057 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 문제는 되게 간단하게 풀었다. 몇번째 라운드에서 만나는지만 계산하면 되기 때문에 한 라운드에서 A, B의 번호가 어디인지 찾았다. 사용한 수식은 위의 과정을 통해 알아냈다. # 토너먼트 import sys input = sys.stdin.readline N, A, B = map(int, input().split()) answer = 0 while True: if A == B: print(answer) b..
https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀긴 풀었는데 정말 비효율적으로 푼 것 같다. 일단 제일 먼저 한 생각이 progresses, speeds 배열을 가지고 기간이 얼마나 걸리는지를 담은 배열(temp)를 만들었다. 배열의 값을 넣을 때는 ceil 함수를 사용하여 올림으로 계산하였다. 그러고 temp의 모든 값이 0이 될 때까지 반복문을 돈다. temp[idx] 값이 0이라면(개발이 완료되었다면) 다음 temp를 검사한다. 만약 0..
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 문제보고 중복순열로 풀려고 하다가 .. 백트래킹도 생각해봤다가.. n을 1부터 증가해가며 확인해보니 간단하게 dp로도 풀 수 있었다. 문제에 적용할 알고리즘을 적절히 떠올리는게 너무 어려운 것 같다. def solution(n): dp = [1, 1] + [0] * (n-1) for i in range(2, n+1): dp[i] = dp[i-1] + dp[i-2] return dp[n] %..
https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): Q = s[2:-2].split('},{') Q.sort(key=lambda x:len(x)) answer = [] for q in Q: l = q.split(',') for i in l: if int(i) not in answer: answer.append(int(i)) return answer 문제를 보자마자 집합의 길이가 작은 순서대로 answer 배열에 포함되..
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(s): answer = 0 Q = deque(s) for i in range(len(s)): Q.append(Q.popleft()) if check(Q): answer += 1 return answer def check(Q): stack = [] for q in Q: if q in ('(', '[', '{'): stack..
https://school.programmers.co.kr/learn/courses/30/lessons/12985?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n,a,b): answer = 0 while True: if a == b: return answer if a % 2 == 1: a = a // 2 + 1 else: a = a // 2 if b % 2 == 1: b = b // 2 + 1 else: b = b // 2 answer += 1 a와 b가 대진을 하는 경우는 a와 b의 몫(2로 나누어..
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 리스트 A에 인덱스 접근을 할 때 연속되어야 하기 때문에 for 반복문으로 bruteforce로 해결하였다. 찾아보니 투 포인터를 사용한 해결 방법도 있었다. (https://jennnn.tistory.com/64) 다양한 해결방법을 아는 것은 문제를 해결하는 시야를 넓혀주기 때문에 문제 접근 방법을 더 생각할 필요가 있는 것 같다 :) # 수들의 합 2 ..
- Total
- Today
- Yesterday
- 파이썬
- 큐
- 1764
- 10845
- 딕셔너리
- 2805
- 10971
- 브루트포스
- 1715
- 1358
- 수학
- 백트래킹
- 프로그래머스
- 10815
- 빌림
- 1182
- 러스트
- 백준
- dp
- 싸피
- 17478
- 스택
- 11051
- 조합
- 자료구조
- 삼성청년소프트웨어아카데미
- 10816
- 1759
- 덱
- heapq
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |