이 문제는 SW Expert 아카데미 출처입니다. 25년 간의 수행 끝에 원재는 미래를 보는 능력을 갖게 되었다. 이 능력으로 원재는 사재기를 하려고 한다. 다만 당국의 감시가 심해 한 번에 많은 양을 사재기 할 수 없다. 다음과 같은 조건 하에서 사재기를 하여 최대한의 이득을 얻도록 도와주자. 1. 원재는 연속된 N일 동안의 물건의 매매가를 예측하여 알고 있다. 2. 당국의 감시망에 걸리지 않기 위해 하루에 최대 1만큼 구입할 수 있다. 3. 판매는 얼마든지 할 수 있다. 예를 들어 3일 동안의 매매가가 1, 2, 3 이라면 처음 두 날에 원료를 구매하여 마지막 날에 팔면 3의 이익을 얻을 수 있다. [입력] 첫 번째 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스 별로 첫 줄에는 자연수 N..
어려운 재귀문제였다.. import sys read_ints = lambda: list(map(int, sys.stdin.readline().rstrip().split())) read_int = lambda: read_ints()[0] def permu(lst, op_count, n, idx, answer): if idx==n-1: #print(answer) return answer, answer max_val = int(-1e10) min_val = int(1e10) for i in range(4): if op_count[i] == 0: continue op_count[i] -= 1 result = calculate(answer, i, lst, idx) max_tmp, min_tmp = permu(ls..
조합 모듈 수동으로 짤 때의 순서도 (재귀 이용) 1. ver1 #조합 함수 직접 구현 #import sys read_ints = lambda: list(map(int, input().split())) read_int = lambda: read_ints()[0] #입력받은 리스트의 첫번째 원소 받기 def combination_recursive(seq, flag, N, M, idx): if idx==N: #인덱스 넘칠 경우 if sum(flag)==M: #조합과 flag 합이 같다면 for i,f in enumerate(flag): #그때 flag 값이 참인 seq 원소를 출력 if f==1: print(seq[i],end=' ') print() return combination_recursive(seq..
📝 코딩테스트를 위한 파이썬 문법 1️⃣ 자료형 🔷수 자료형 : 숫자 자료형(정수형, 실수형), 코딩 테스트에서 대부분은 정수형을 다루는 문제가 출제됨 1. 정수형 양의 정수, 음의 정수, 0, 코딩테스트에서 출제되는 알고리즘 문제 대부분이 입력과 출력 데이터가 정수형임 2. 실수형 변수에 소수점을 붙임 수를 대입하면 실수형 변수 a= 5. print(a) #a = 5.0 출력 a= -.7 print(a) #a = -0.7 출력2-1. (실수형) 지수 표현 e다음에 오는 수는 10의 지수부를 의미한다. 예) 1e9: 1 * 10의 9제곱 = INF(무한대)의미로 사용 예2) a = 75.25e1 #75.25 * 10의 1제곱 ..
문제유형: 삼성 전자의 전형적인 시뮬레이션 문제 1. 내 풀이(풀이 단계적 힌트 참고) #n,m을 공백으로 구분해서 입력받기 n,m = map(int, input().split()) x,y,direction = map(int, input().split()) #방문한 위치를 저장하기 위한 맵을 생성하여 0으로 초기화 d = [ [0] * m for _in range(n) ] #현재 좌표 값 방문 처리(0->1) d[x][y] = 1 #전체 맵 정보를 입력받음(이 부분까지 입력받지는 몰랐네) array = [] for i in range(n): array.append(list(map(int, input().split()))) #책에 나와있는 대로 '북동남서' 방향 정의(인덱스는 direction, direc..
import sys n = sys.stdin.readline().strip() count =0 #이동 조합 딕셔너리 생성 move_types = [(-2,-1), (-2, 1), (-1,2), (-1,-2), (1,-2), (1,2), (2,-1), (2,1)] for i in move_types: #각 이동 연산하기 전 행렬 초기화 col = ord(n[0]) row = int(n[1]) #열과 행에 이동 적용 col+=i[0] row+=i[1] #열과 행이 주어진 범위에서 넘치지 않을 때만 이동가능 경우의 수 count +1 if (col>=97 and col=1 and row 딕셔너리 생성으로 구현하자 + 모범답안에서는 col= int(ord(n[0])) - int(ord('a')) +1로 정의해서..
s= input() count0 = 0 #다 0으로 바꾸는 횟수 count1 = 0 #다 1로 바꾸는 횟수 #처음부터 뒤집고 시작하는 경우는 각 경우에 +1 if s[0]=='0': count1+=1 else: count0+=1 #길이보다 하나 더 작을때까지 비교 for i in range(len(s)-1): if s[i]!=s[i+1]: #이웃한 수가 다를 때 if s[i+1]=='0': #다음 수가 0이면 1로 바꿔야 하는 횟수를 하나 증가 count1+=1 else: #다음수가 1이면 0으로 바꾸는 횟수 하나 증가 count0+=1 print(min(count0,count1)) #전체를 다 0으로 바꾸는 횟수와 1로 바꾸는 횟수 중 작은 수를 출력 피드백: 0으로 바꾸는 횟수, 1로 바꾸는 횟수만 ..
import sys #개행문자 제외 문자열 입력받기 num = sys.stdin.readline().strip() result = 0 #문자열 길이 만큼 반복 for i in range(len(num)): if result==0 or (int(num[i]))==0 or (int(num[i]))==1: #처음숫자는 +, 만약 주어진 문자가 0이거나 1이면 기존 결과 +를 해준다. result += int(num[i]) else: result*=int(num[i]) #주어진 문자가 0,1이 아니면 곱해준다. print(result)
- Total
- Today
- Yesterday
- 이코테
- 네트워크
- DFS와BFS
- slowstart
- ssafy #싸피 #8기 #ssafy전공자
- aimd
- 라우팅알고리즘
- CSMA
- 데이터베이스시스템
- 링크상태
- 토익 #900점 #토익독학길잡이 #토익독학 #토익공부법
- tahoe
- 1이될때까지
- 백준1260
- 문자열뒤집기
- 연산자끼워넣기
- 큰수의법칙
- 파이썬
- 느는중
- reno
- 정보컴퓨터
- tcp/ip흐름제어
- 그리디
- 매체접근제어
- 모험가길드
- 거리벡터
- 백준 #1158 #java
- boj1260
- 14888
- Colab
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |