![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/6o8p1/btrAJSAfFKF/vPS6cZERiu4VckWaHGiCV0/img.png)
어려운 재귀문제였다.. 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dwVlQT/btrzmkpLiLf/4C15jw1MxkKuPllURu6891/img.png)
조합 모듈 수동으로 짤 때의 순서도 (재귀 이용) 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)
# 모험가 길드 #공포도가 높은 모험가는 위기 상황에서 대처할 능력 떨어짐=> 공포도가 x인 모험가 반드시 x명이상 여행 갈때만 포함하자! # 생성할 수 있는 최대 그룹 수 구하기(몇 명은 남아있어도 됨, 경우의 수 아님!) # 사람 수와 각 사람별 공포도 입력 n = int(input()) x = list(map(int, input().split())) #가장 큰 숫자부터 빼기 위해 정렬 x.sort() #그룹 수의 최댓값: 처음에는 0임 group = 0 while n >=x[n-1]: #주어진 수가 제일 큰 숫자 이상일 때 그룹 수 세기 가능 n-= x[n-1] #현재 남은 수 중에서 제일 큰 수 만큼 빼기 group+=1 #그룹 최대 숫자 +1 if n==0: #남은 사람이 없을 때는 반복문 빠져..
- Total
- Today
- Yesterday
- Colab
- DFS와BFS
- reno
- 링크상태
- slowstart
- 정보컴퓨터
- 이코테
- 문자열뒤집기
- 모험가길드
- 큰수의법칙
- tahoe
- 파이썬
- 백준 #1158 #java
- 토익 #900점 #토익독학길잡이 #토익독학 #토익공부법
- 14888
- 거리벡터
- 라우팅알고리즘
- 그리디
- ssafy #싸피 #8기 #ssafy전공자
- 느는중
- 매체접근제어
- 백준1260
- CSMA
- 연산자끼워넣기
- tcp/ip흐름제어
- aimd
- 데이터베이스시스템
- 네트워크
- 1이될때까지
- boj1260
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |