일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 공기업공부
- 자바스크립트
- 토익 영단어
- TOEIC
- BOJ
- 문제해결능력
- 영단어
- TOEIC문법
- 다이나믹프로그래밍
- 토익문법노트
- 데이터베이스
- 토익시험준비
- 토익문법정리
- sqld
- 자료해석
- 알고리즘
- 매일매일NCS
- NCS수리자료해석
- 너비우선탐색
- 주어
- TOEIC Vocabulary
- 토익단어
- 수리능력
- 영어문장
- BFS
- 영문법
- 파이썬
- 영단어암기
- dfs
- 브루트포스
- Today
- Total
목록브루트포스 (4)
하나씩 알아가기
재귀를 이용한 브루트 포스 문제입니다. N+1일째 되는 날 퇴사를 해야하는데, 남은 N일 동안 최대한 많이 상담하여 얻을 수 있는 이익을 구해야 합니다. 우선 Ti와 Pi가 있는데 각각 상담을 하는 데 걸리는 시간과 상담으로 인해 얻는 이익을 의미하는 일차원 배열입니다. 재귀로 풀려면 재귀 함수를 구현해야 하는데 이는 우선 정답을 찾은 경우, 찾지 못하는 경우, 그 다음 케이스(재귀)로 구현됩니다. 먼저 정답을 찾은 경우는 n+1일이 되는 경우입니다. 이 경우 반환되는 값이 기존의 이익(profit)보다 더 높을 경우 갱신하고 종료(return;)해 줍니다. 그리고 다음 분기는 정답을 찾지 못하는 경우입니다. 이 경우는 그냥 종료하는데 바로 day가 n+1을 초과할 때 입니다. 마지막으로 다음 경우를 호..
인접한 두 사탕을 교환하여 그 때마다 사탕 길이를 계산하고 가장 긴 사탕 길이를 출력하면 해결할 수 있는 문제입니다. 양옆에 인접한 사탕을 스왑하고 가로 길이 확인 -> 갱신 세로 길이 확인 -> 갱신 스왑한 사탕을 되돌려 놓음 위아래로 인접한 사탕을 스왑하고 가로 길이 확인 -> 갱신 세로 길이 확인 -> 갱신 빨간 글씨로 쓴 부분은 반복되기 때문에 함수로 빼 주었습니다. 길이를 계산해 주는 함수에서 중요한 것은 내부 루프입니다. index가 범위를 벗어나지 않도록 0 ~ n-1(n-1미포함)까지 설정 해주고 인접한 두 사탕이 같은 사탕이면 count를 증가시켜 주고 다른 사탕이면 길이를 갱신하고 다음번 비교를 위해 count를 1로 초기화 시킵니다 파이썬의 함수 내부에 global 키워드를 사용하면 ..
E, S, M 은 각각의 범위를 가지고 있습니다. 그리고 그 범위를 넘어가면 1로 초기화 시켜주는 규칙만 지켜주며 전체를 카운트 해주는 변수를 결과로 출력해주면 됩니다. e, s, m = map(int, input().split()) year = 0 esm = [0, 0, 0] while esm[0] != e or esm[1] != s or esm[2] != m: year += 1 esm[0] += 1 esm[1] += 1 esm[2] += 1 if esm[0] == 16: esm[0] = 1 if esm[1] == 29: esm[1] = 1 if esm[2] == 20: esm[2] = 1 print(year) www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라..
틀린 부분이 있을 경우, 지적해 주시면 감사하겠습니다. 아홉 개의 input이 들어오는데 이 중 두 개의 input은 fake고, 일곱 개의 input의 합이 100인 것들만 오름차순으로 출력하면 되는 간단한 문제입니다. 브루트 포스(Brute Force) 조합 가능한 모든 문자열을 하나씩 대입해 보는 방식으로 문제를 해결하는 방법 브루트 포스라 이름은 거창한데 원시적인 방법으로 문제를 풀어야 할 경우 사용하는 것 같습니다. 그런데 모든 문제에서 사용되지 않나요?.. 사실 이런 용어가 잘 와닿지는 않네요ㅠ 조금 더 내공이 쌓이면 어떤 경우에 브루트 포스 방법이 사용되는 지 파악이 되는 날이 오면 좋겠네요 문제로 돌아와서 9개의 데이터 중 2개의 데이터만 뽑아서 100이 되면 출력하는 식으로 문제를 풀겠습..