전체 글 211

[Python][백준] 11286. 절댓값 힙 / 우선순위 큐(S1)

🔗링크 :  https://www.acmicpc.net/problem/11286🗒️파이썬 코드 풀이import sysimport heapqinput = sys.stdin.readlineN = int(input())heap = []for _ in range(N): num = int(input()) if num == 0 : if heap: print(heapq.heappop(heap)[1]) pass else : print(0) else: heapq.heappush(heap,(abs(num),num)) 1. 최대, 최소 관련된 문제가 나오면 heap을 생각해봐야한다. 2. 조건에 따라 he..

[Python][백준] 11053. 가장 긴 증가하는 부분 수열/ DP (S2)

🔗링크 :  https://www.acmicpc.net/problem/11053🗒️파이썬 코드 풀이N = int(input())lst = list(map(int,input().split()))dp = [1] * N for i in range(1,len(lst)): for j in range(i): if lst[i] > lst[j] : dp[i] = max(dp[i],dp[j]+1)print(max(dp)) 1. 이전 값들은 계속 다음 값들에 영향을 주기 때문에 DP를 생각한다.  2. 브루트포스 방식으로 하나 하나 조사를 하고, 자신보다 작은 경우 dp 값을 갱신해준다. 3. 갱신 할 때, 가장 큰 값들만 갱신되게 하면 되므로 max 함수를 이용한다.  4. 이후..

[Python][백준] 11866. 요세푸스 문제 0 / 구현,큐(S4)

🔗링크 :  https://www.acmicpc.net/problem/11866🗒️파이썬 코드 풀이from collections import dequeN,K = map(int,input().split())res = []q = deque([i for i in range(1,N+1)])while q : for _ in range(K-1): q.append(q.popleft()) res.append(q.popleft())print('',end="") 1. 이 문제 같은 경우 queue로 간단하게 풀 수 있다. 2. K-1번 만큼 큐의 맨 앞 부분을 빼서 뒤에 붙여준다.  3. 그리고 K 번째 수를 제거해준다.  4. queue가 완전히 사라질 때 까지 반복한다.   🔎 내 풀이..

크래프톤 정글 7기 8,9일차 / 정렬 방법 / 해시 충돌

처음에는 시간이 느리게 간 것 같은데, 어느새 정글에 온지 8일차이다. 대부분 사람들의 얼굴을 이제는 기억하고 친해지기 시작했다.  오늘은 알고리즘 문제를 3문제 정도 풀고,내일 있을 Quick sort 시험에 대해 준비하였다.  교재를 통해  Quick sort를 공부하면서 정글러와 이야기를 나누었다. 훨씬 더 간단한 코드가 있는데, 도대체 왜 이렇게 쓴 것인지.  간단한 코드를 통해서도 충분히 Quick sort를 알 수 있었고, 굳이 교과서대로 할 필요성도 못 느꼈다.  이와 관련해서, 현직 일을 하다오신 다른 정글러 형님에게 여쭤보았고, 이것들을 컴퓨터 시스템 측면으로 설명을 해주셨다. " 단순히 이럴 것 같기 때문에가 아니라, 이런 구조 때문에 이렇다 ! "이런 얘기를 듣고 CS의 중요성을 또 ..

Jerry/일상 2024.09.11

정렬 알고리즘 (삽입,선택,버블,셸,퀵,힙,병합 정렬)

✨ 정렬 알고리즘  크래프톤 정글에서 퀵 정렬에 대해서 쪽지 시험이 나왔다. 퀵 정렬을 공부하면서 다른 정렬 방법에 대해서도 궁금증이 생겼고, 책과 블로그들을 참고하면서 정리 해보았다.  🔖 Insertion sort (삽입 정렬) 삽입 정렬은 손안의 카드를 정렬하는 방법과 유사하다.  새로운 카드를 기존 정렬된 카드 사이 올바른 위치에 삽입한다. key 값은 2번째 인덱스부터 시작되며, key 값이 자료의 길이만큼 이동되면 정렬이 완성된다.   특징 : 1. 안전한 정렬 방법이다. (바로 옆의 데이터와 비교 )→ 안전하다는 것을 동일한 값을 가진 원소들의 상대적인 순서가 유지되는 것을 의미2. 이미 정렬되어 있는 경우나 자료의 수가 적을 경우 구현이 간단3. 비교적으로 많은 레코드들의 이동이 필요하다..

크래프톤 정글 7기 6,7일차 / 생각 정리

크래프톤 어느덧 정글에서 6,7일 차가 지났다.  6일차에는 전날 늦게까지 공부를 하고 9시 쯤 다시 정글의 교육관으로 왔다.오전에는 하루종일 하노이 탑에 대해 이해하려 했고 블로그로 정리를 하였다.  이후 점심시간이 지나고 계속 알고리즘 문제를 풀기 시작했다. 그리고 약 7시 이후 컴퓨터 시스템 책에 대해 공부를 했다.   내 생각에 이 책의 난의도는 꽤나 많이 높은 것 같다. 단순히 읽는 것 뿐만 아니라, C언어적으로 이해를 요구하는 것 같다.  너무 이해되지 않아서 유튜브를 보면서 개념을 흩어보고, 다시 중요한 부분들을 읽어서 표시하여  블로그에 정리 해두었다.  1장. 컴퓨터 시스템 (Computer Systems A Programmer's Perspective)🔖1.1 정보는 비트와 컨텍스트로..

Jerry/일상 2024.09.09

1장. 컴퓨터 시스템 (Computer Systems A Programmer's Perspective)

🔖1.1 정보는 비트와 컨텍스트로 이루어진다. 소스 프로그램은 0 또는 1로 표시되는 비트들의 연속으로, 바이트라는 8비트 단위로 구성된다. 각 바이트는 프로그램의 텍스트 문자로 나타낸다. 그리고 대부분의 컴퓨터 시스템에서는 텍스트 문자를 아스키(ASCII) 표준을 사용하여 표시한다. 오로지 아스키 문자들로만 이뤄진 파일들을 텍스트 파일이라고 부른다. (이외의 다른 모든 파일들을(실행파일 등) 바이너리 파일이라고 한다.) + 최근에는 아스키 대신 유니코드가 많이 사용되고 있다. 모든 시스템 내부의 정보 (데이터,네트워크,프로그램 등)는 비트들로 표시되는데, 서로 다른 객체들을 구분하는 유일한 방법은 이들을 바라보는 컨텍스트에 의해서이다. 여기에서 컨텍스트는 저장매체, 프로세서의 구조, 파일 형식, 네트..

컴퓨터 기초/CS 2024.09.08