>문제 > 핵심 에라토스테네스의 체 >풀이과정 소수 구하기 문제. 이거 어디서 본 것 같은데?? 백준 1978번 문제 >> sedangdang.tistory.com/18?category=969000 [C] 백준 | 1978번 코드 - 소수찾기 >문제 > 핵심 반복문 돌기. 효율적인 알고리즘을 강구해보자. >풀이과정 [소수 : 1과 자기 자신만으로 나누어 떨어지는 1보다 큰 양의 정수. ] 소수 찾기 알고리즘 기본서에 꼭 나오는 내용으로 기 sedangdang.tistory.com 이미 풀어본 문제다! 다만 저 문제는 1000 이하의 소수를 찾는 것이고 이 문제는 백만까지의 소수를 구해야 하는 것이라는 큰 차이가 있다.. 그래서 이 문제는 넓은 범위에서 소수를 찾을때 유용하게 쓰이는 알고리즘인 를 이용했다..
파이썬을 배우자 1.1) 덧셈, 뺄셈, 곱셈, 나머지, 거듭제곱은 정수형끼리의 계산은 정수형, 소수형끼리의 계산은 소수형, 정수와 소수 혼합의 계산은 소수형이 나온다 (소수가 정수보다 힘이 더 세다고 이해하기) # 거듭제곱은 이렇게 생겼다 print(2 ** 3) 1.2) 나눗셈 연산은 정수형끼리 계산을 해도 소수형으로 나온다. 정수형으로 변환하려면 형변환을 해줘야한다. 1.3) 파이썬도 일반적인 사칙연산 법칙을 모두 따른다. 1.4) 버림 나눗셈 (floor division) - 나머지 부분을 버리고 출력 (=내림) # floor division(내림) print(8 // 3) >> 2 print(7 // 2) >> 3 print(8.0 // 3) >> 2.0 print(8.0 // 3.0) >> 2...
Vim은 어렵다. 근데 해야지 어쩌나. 핵심만 알아보자. Vim은 CLI 환경에서 사용하는 텍스트 에디터다. 특이한점이 있다면 방향키 대신 이걸 방향키로 대신 이용할 수 있다. 근데 방향키 없는 키보드 있나? 그냥 방향키 쓰자 다른거 하기에도 머리아프다. Vim [파일명] 치면 vim으로 들어간다 Vim은 네가지 모드가 있다. 일반 모드 : 커서 이동, 삭제, 취소, 붙여넣기 입력 모드 : 입력 비주얼 모드 : 블록 지정, 복사, 잘라내기 명령 모드 : 저장, 종료, 검색, 치환 ### 모드간 이동을 할때 반드시 일반모드를 거쳐가야한다 (ESC) ESC ESC ESC 1. 일반 모드 (커서이동 / 삭제 / 취소 / 붙여넣기) 타 모드에서 일반모드로 복귀 -> "esc" 개중요!!! x : 한칸 삭제 [숫..
이번에 Git과 Github에 대해 알게 되었다. 그래서 까먹지 않기 위해 블로그에 따로 기록을 해야겠다 느꼈다. 우선 git을 기본적으로 사용하기 위한 CLI 환경에서 사용할 수 있는 커맨드 목록을 찾아왔다. 옵션 : 커맨드가 어떻게 동작할지 지시 ('-'가 붙음) 인자 : 커맨드가 동작하는 대상 (띄워쓰기) cal -A 3 cal -B 3 -j (옵션 겹쳐쓰기 가능. 인자를 필요로 하는 옵션 / 단독으로 쓰이는 옵션으로 구분된다) ls -a -l (O) ls -al (O) cal -jB 3 (O) cal -Bj 3 (X, 인자를 필요로 하는 옵션이 뒤에 와야한다) 1. 이동(cd) cd [경로] : 해당 경로로 이동 cd ~ : 홈 디렉토리로 이동 ('~' : Tilde, 현재 사용자의 홈 디렉토리)..
>문제 > 핵심 브루트포스 알고리즘 (모든 경우를 다 따져보는 방법) >풀이과정 아.. 어렵다 혼자 끙끙 생각하다가 도저히 생각이 안나서 다른사람이 쓴 아이디어를 보고나서야 풀었다.. 풀고나서야 그렇게 어려운 문제가 아니었다는걸 깨달았다.. 코딩은 나의 길이 아닌가 내가 생각한 방법 1. 블록의 높이를 입력받으면서 가장 높은 max, 가장 낮은 min 값을 찾는다. 2. max층부터 min층까지 층층이 탐색하면서, 2-1. 현재 높이에서 구멍이 몇칸 뚫려있는지 구하고 2-2. 인벤토리에 있는 블럭으로 그 구멍을 다 메꿀 수 있으면 메꾸고 break. 2-3. 메꿀 수 없으면 한층 더 파고 내려가기 3. 그렇게 돌면서 모든 블럭이 평평하게 맞춰진다면 break 후 총 걸린시간 출력.. 하는 구조를 생각했었..
>문제 > 핵심 이분탐색 long long형 >풀이과정 이 문제,, 어딘가 낯이 익다 했더니 1654번 문제 "랜선 자르기" 랑 구조가 거의 똑같다!! 그래서 나무의 최대 길이가 2,000,000,000이라는 점에서 int형이 아니라 long long 형을 사용해야 한다는 점을 잊지 않고 사용해서 어렵지 않게 문제를 풀 수 있었다. 우선 나무의 길이를 입력받으면서 가장 긴 나무의 길이를 max에 저장한다. 그리고 이분탐색을 위해 left = 0, right = max (left 깨달은점 한번 풀어본 유형은 어떻게 풀어야겠다는 감이 빨리 온다는걸 이 문제로 느꼈다. 클래스 2는 이제 거의 다 풀어가는데 앞으로도 계속 다양한 유형의 문제를 접해봐야겠다. >코드 #define _CRT_SECURE_NO_WAR..
>문제 > 핵심 큐 >풀이과정 이 문제를 풀다가 돌아버릴 뻔 했다. 문제를 풀고 나니 모두 나의 무지에 의한 것이였다. 내가 겪었던 문제점 1. 내가 원하는 문서가 언제 출력되는지 어떻게 알아? 큐의 front에 있는 값이 현재 큐에서 가장 중요도가 높은 문서라면 dequeue를 진행하고, 그렇지 않다면 dequeue 후 맨 뒤에 enqueue 한다. 근데 처음에 m번째 위치에 있는 문서가 enqueue, dequeue를 거치며 순서가 뒤죽박죽 섞이는데 언제 출력될지 어떻게 알까..? 곰곰이 생각하다가,, int[SIZE][2] 배열을 쓸까 생각하다가 이건 큐로 만들기 조금 복잡할 것 같아서 구조체! Paper을 만들어서 구조체 배열을 갖는 큐를 만드는 방식을 사용했다. Paper 구조체에 중요도를 넣는..
>문제 > 핵심 스택 >풀이과정 문제가 뭔소린가.. 싶어서 문제를 이해하는데 조금 시간이 걸렸다. 그래도 이해하고 난 후 코드를 짜는건 크게 어렵지 않았다. num=1부터 오름차순으로만 증가!. (e : 입력값) 1. 스택의 Top e : e에 도달하기 전까지 pop, num은 고정. 3. 스택의 Top != e : 수열을 만들 수 없음. chk = 0 으로 체크 후 break. 4. 스택의 Top == e : 해당 값을 pop 하고 위 과정 반복. 하나 고려해야 할 점은 정수를 입력받고 나서 바로 + 혹은 - 를 찍으면 안되고, 모든 정수를 입력받은 후에 만들수 있는 수열인지, 아닌지 체크를 한 다음 정답을 출력해야하므로 따로..