일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 입출력
- 변수
- 귀도 반 로섬
- 파이썬
- 조지 불
- 부스트캠프
- 정보를 담을 수 있는 그릇
- append()
- 불리안
- 조건문 큰 수부터 입력받아야하는 이유
- 변할 수 있는
- 성적 입력받기
- 그룹 # 그룹 해체 # 단축키 #figma #Figma
- 변수와 입출력
- insert()
- 딥러닝
- pop()
- del()
- false
- 리스트와 차이점
- Python
- null # undefined
- Java Script # == # === # difference # 차이
- 차집합
- 1일차
- html
- a=1
- input()
- index()
- 합집합
- Today
- Total
목록Algorithm (82)
I about me
문제 분석 및 정답 도출 ① "("로 시작하는가? 시작한다면? "("의 수, "}"의 수 확인하기 그렇지 않다면? return False ② "("의 수 =="}"의 수 return True else: return False ① , ② 와 같은 생각에 따라 테스트 케이스는 합격했다... 그러나 다른 케이스에서는 안 된다 한다. def solution(s): start_count = 0 finish_count = 0 for i in range(len(s)): if s[0] == "(": if s[i] == "(": start_count += 1 else: finish_count += 1 else: return False if start_count == finish_count: return True else..
문제 분석 및 정답 도출 1) 어떻게 해야 최솟값이 나올까? 가장 큰 수 * 가장 큰 수 = 너무 커짐. 가장 작은 수 * 가장 작은 수 = 작음. → 너무 작으면 나중에 어차피 가장 큰 수 * 가장 큰 수 될 수 있음. 그러므로, 한 리스트는 작은 숫자부터 가고, 한 리스트는 가장 큰 수부터 가게끔 해야됨. 2) 개념을 알아야된다! A.sort() B.sort(reverse=True) 3) 그래서? solution은? def solution(A,B): A.sort() B.sort(reverse = True) answer = 0 for i in range(len(A)): answer += A[i] * B[i] return answer 더 나아가기 sort()와 sorted의 차이 1) sort() arr..
문제 분석 및 정답 도출 1) 알파벳인가? 아닌가? s.split(" ") if i[0]가 알파벳: i[0].대문자 + i[1:].소문자 else: i[0] + i[1:].소문자 def solution(s): if not s: return "" test = s.split(" ") answer = [] for i in test: if i[0].isalpha(): answer.append(i[0].upper() + i[1:].lower()) else: answer.append(i[0] + i[1:].lower()) return " ".join(answer) 이걸 하면서 내장함수 s.isalpha()에 대해서 알게 되었다. 즉, 알파벳인가?라는 의미.. 근데 계속 런타임이 뜬다! 왜!!!!! 2) 아예... ..
[출처: 10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트 | 1주차 시간복잡도, 빅오표기법, 공간복잡도, 누적합, 구현] 1. 문제를 본다. 2. 문제를 해석한다. (1) 최대, 최소 범위를 파악합니다. (2) 단순 구현이라면 구현하자. (3) 무식하게 풀 수 있다면 무식하게 풀자 (4) 아니라면 다른 알고리즘을 생각하자 (5) 제출하기 전, 반례를 항상 생각하자 3. 코드를 작성한다. https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net
[출처: 10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트 | 1주차 시간복잡도, 빅오표기법, 공간복잡도, 누적합, 구현] 위와 같이 진행할 경우, N이 10만이라는 숫자가 주어질 때, 10만 * 10만 = 100억의 시간복잡도가 생긴다. 이것은 불가능할 확률이 높다는 뜻이니 다른 방법을 써야한다! 함께 누적합을 알아보자. 다음과 같이 1번 박스, 2번 박스, 3번 박스 이렇게 만들어 놓고, 원하는 값이 있을 때 만들어놓은 박스들을 이용해서 구하는 방법이다! 근데 또 1번 박스 따로, 2번 박스 따로, 이렇게 만드는 것은 쉽지 않다. 그러므로 이전에 만들어놓은 값에 그 해당 요소만 더해가는 방식으로 만들어준다. psum[1] psum[2] = psum[1] + a[2] psum[3] = psum[2] ..
빅오표기법 n 1 2 3 4 5 2^n 1 2 8 16 32 n! 1 2 6 24 120 https://blog.naver.com/jhc9639/222283814653 [알고리즘 강의] 1주차. 시간복잡도, 빅오표기법, 공간복잡도, 누적합, 구현 알고리즘 강의 1주차입니다. 시간복잡도, 빅오표기법, 공간복잡도, 누적합, 구현까지 알아보겠습니다. 시간... blog.naver.com 이 강의를 통해 알게 된 것! 재귀함수 3번 반복하라고 하면? → 3^n 재귀함수 5번 반복하라고 하면? → 5^n
파이썬의 스택(LIFO) 연산(리스트 이름이 s일 때) s.append(data): top 위치에 새로운 데이터를 삽입하는 연산 s.pop(): top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산 s[-1]: top 위치에 현재 있는 데이터를 단순 확인하는 연산 ex) 길이 우선 탐색(DFS), 백트래킹 파이썬의 큐(FIFO) 연산(리스트 이름이 s일 때) s.append(data): rear 위치에 새로운 데이터를 삽입하는 연산 s.popleft(): front 위치에 현재 있는 데이터를 삭제하고 확인하는 연산 s[0]: front 위치에 현재 있는 데이터를 단순 확인하는 연산 ex) 너비 우선 탐색(BFS)
자릿수 관련한 문제가 나오면 단순히 둘째 자릿수만 생각하면 안 되고 최악의 조건인 10000 이하 수도 생각해야한다. 처음에 나는 둘째 자릿수만 생각하고 def solution(x): n = (x // 10) + (x % 10) return x % n == 0 이게 왜 틀렸는지 계속 생각했다...! 자 오늘 인강에서 들었듯! 최악의 조건을 생각해야한다!! 그러면 다음과 같이 하면 될 것이다!! def solution(x): sum = 0 for i in str(x): sum += int(i) return x % sum == 0 오늘 배웠던 리스트 사용 및 문자형 변환의 기법이 잘 보이는 문제였다고 생각한다!! 그래도 배운걸 나름 잘 써먹어서 행복하네요ㅎㅎ
배열과 리스트는 정보를 담을 수 있는 기본적인 자료구조이다. 파이썬에서는 리스트가 배열의 특성도 함께 내포하고 있어 크게 구분하지는 않지만, 두 개의 특징과 동작원리를 아는 것은 매우 중요하다고 한다. 그럼 무엇이 비슷하고 무엇이 다른 건지 함께 살펴보도록 하자! 배열 리스트 정의 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 (값+포인터를 묶은 노드)를 포인터로 연결한 자료구조 장점 인덱스를 사용하여 값에 바로 접근 가능 크기를 변하시키기 쉬움 단점 한 번 선언하면 크기를 늘리거나 줄일 수 없음. 값에 접근하는 속도가 느림 그러나 파이썬에서는 리스트가 배열의 장점도 가져왔다는 것을 깨닫고, 앞으로 거의 모든 문제에서 리스트를 사용하면 된다는 것을 잊지 말자..!! https://www.acmi..
코드의 논리 오류를 어떻게 잡을까? ① 문법적인 오류는 "컴파일러"를 통해 충분히 잡아낼 수 있음. ② 논리적인 오류는 "디버깅"을 통해서 잡아내야함... 요 녀석이 골칫거리ㅋㅋ 디버깅이 왜 중요할까? 우리가 코테 문제를 풀다보면 index나 예외처리 등 실수를 많이 낸다...! 즉, 코드는 돌아가지만 요구한 조건에 맞지 않아 '틀렸습니다!' 하는 사태가 일어나는 것이다... 그렇기에 디버깅이 실수를 줄여줄 수 있다고 한다! 오류 ① 초기화가 안 되어 있음. 오류 ② 인덱스 범위 지정이 잘못되어있음. 오류 ③ 잘못된 변수 사용 오류 ④ 파이썬 자동 형 변환 요즘 프로그래머스를 풀 때 75.8%, 81.0% 정답률 이런 식으로 나올 때마다 매우 화가 난다...! 다른 거는 맞았다는데... 왜 너의 케이스만..