Study_Cat

꾸준히 공부하는 고양이가 될게요.

끊임없는 노력은 천재를 이긴다.

코딩 37

[solved.ac] 플래티넘2 달성 소감과 과정, 앞으로의 계획

드디어 플래티넘2에 도착했습니다... 눈치가 빠르신 분은 알아챘을 수도 있습니다. 플3 포스팅을 안한 것과 뒤의 저 프로필이 의미하는 바가 무엇인지.. 플3 찍고 나중으로 포스팅을 미뤘다가 어느세 50%정도 채워져서 그냥 포스팅하지 않았습니다. 그리고 뒤의 프로필을 수열과 쿼리를 여러 문제를 풀면 주는건데... 넴, 세그 트리가 대량으로 과제로 나와서 본의 아니게 날먹했습니다.  티어가 실력을 전부 나타내진 않는다 어느정도 티어를 쌓으면서 위의 말이 공감되기 시작했습니다. 예전에는 티어 올리는 재미로, 티어를 목적으로 공부한 반면 지금은 알고리즘을 공부하기 위해 공부하고, 티어는 그 추가적인 결과물이라고 생각합니다.  예전에는 실버나 골드 하위 문제는 그냥 넘기는 버릇이 있었는데, 이제는 일단 풀어야겠습..

코딩/알고리즘 2024.06.04

[C/C++] 포인터 완벽 이해 ( 포인터, 배열, 상수, 다중포인터 )

오늘은 C언어를 입문하는 사람에게 가장 어렵다고 소문난 포인터를 쉽게 이해할 수 있도록 설명해보겠습니다. 잘 이해되지 않는 부분은 댓글로 남겨주세요. 연산자 ( 배경지식 )&(변수 이름) = 해당 변수의 주소*(주소) = 해당 주소의 값 int a = 10; printf("a의 주소 = %d\n",&a); printf("해당 주소의 값 = %d", *(&a)); /// a의 주소 = 6422044 ( 사용자 마다 다름 ) /// 해당 주소의 값 = 10  변수 ( 배경지식 )모든 변수와 값은 메모리의 어딘가에 저장되며 저장된 위치를 가르키는 것이 주소이다. 예를 들면 int a = 5; 라고 할 때 사용자가 편히 사용할 수 있도록 그냥 a만 사용하면 되지만 컴퓨터 내부에..

코딩/C, C++ 2024.06.02

[알고리즘 문제] 25402번 트리와 쿼리

출처 : https://www.acmicpc.net/problem/25402   1. 풀이해당 문제는 주어진 S에 대하여 집합 혹은 그룹을 만들고 각 그룹의 인원수를 Combination을 이용하여 푸는 것 임을 바로 알 수 있다. 이 문제에서 중요한 점은 주어진 집합 S에 대해 그룹의 인원수를 파악하는 것이다.  각 질문마다 S집합에 속한 노드를 chk배열에 확인해두고 단순히 dfs를 돌면 시간초과가 날 것이다. 그 까닭은 dfs는 O(N)이 아니라 O(V+E) 이기 때문이다. 이러한 dfs는 해당 노드에 연결된 모든 간선을 탐색하므로 해당 문제에서 최악의 경우 각 질문마다 O(N) 이 발생하며 결과적로 N*O(N) = O(N^2) 이 되며 시간초과가 난다. 위 예시에서 빨간색은 S집합에 속한 노드를 ..

코딩/알고리즘 2024.05.29

[CSS] FlexBox의 기본과 햇갈리는 개념 정리

해당 포스팅에선 FlexBox의 기본적이고 햇갈리는 개념을 중심으로 작성하였습니다.  FlexBox는 무엇일까? FlexBox란 유동적으로 배치하기 위한 layout 이라고 생각합니다. 이는 "유동적" 이기에 짧고 간단한 코드로 나타낼 수 있으며 정렬에 용이합니다. 그렇다면 Grid 보다 안 좋은 것 아닌가? 라고 생각하실 수 있지만, 이는 상황에 따라 다릅니다. 여기서 유심히 봐야할 것은 "유동적" 이라는 사실입니다. 해당 개념은 아래 예시들을 통해 알아보겠습니다.  출처 : https://www.acmicpc.net/problemset 제가 좋아하는 백준 사이트로 예시를 들어보겠습니다. (해당 예시는 "100% 맞다, 이렇다." 가 아니라 그저 "유동적" 이라는 느낌으로 받아드리면 될 것 같습니다.)..

코딩/웹 개발 2024.05.26

[알고리즘] ccw와 선분교차 판정

CCW(Counter-Clockwise) 알고리즘 CCW는 벡터의 외적을 이용하여 한 선분에 대하여 한 점의 위치 관계를 파악하는 알고리즘을 말합니다.직선 AB에 대하여 점 C의 위치 관계 서술한다면 AB벡터와 AC벡터의 외적 값의 부호를 통해 알 수 있습니다. 그리고 이러한 위치 관계를 통해 기하에서 다양한 것들을 할 수 있습니다. ※ 벡터의 외적과 방향성오른손의 법칙을 통해 AB벡터로 손을 가르킨 후 점 C의 방향으로 손을 감을 때 엄지손가락이 위로 가면 반시계 ( 외적값이 + ) 반대로 아래로 가면 시계방향 ( 외적값이 - ) 로 나타납니다.  int ccw(pii v1, pii v2, pii v3){ ll val = (v2.first-v1.first) * (v3.second-v1.second..

코딩/알고리즘 2024.05.12

[알고리즘] 강한 연결 알고리즘 SCC (feat. 2150번)

SCC 알고리즘 목적 해당 알고리즘의 목적은 사이클을 한 개의 노드로 묶는 것을 목적으로 하며 이 알고리즘은 위상 정렬에서 많이 사용됩니다. 위상 정렬은 사이클이 없는 그래프, 즉 dag라는 조건이 있어야 했는데요. 하지만 실제 복잡한 그래프는 사이클이 존재하는 그래프가 매~우 많습니다. 이런 상황을 다루기 위한 테크닉이 바로 SCC 알고리즘이 되겠습니다!강한 연결 요소 Strong Connected Component의 Group에 속하는 노드는 u, v 에 대하여 u->v로 항상 이동이 가능한 집단을 말합니다. SCC알고리즘은 이런 조건을 만족하는 노드를 grouping하는 것입니다!일반적인 그래프(트리 포함) -> Dag(트리 포함x) 변환!  작동 메커니즘문제 출처 : https://www.acmi..

코딩/알고리즘 2024.05.09

[인공지능] pytorch 환경 설정 (feat. tensorboard)

Anaconda 설치 아래 링크에서 email을 적은 후 최신 버전으로 설치하면 됩니다. Distribution | AnacondaAnaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.www.anaconda.com 중요한건 환경 변수인데요. 왠만하면 괜찮겠지만, 혹시나 하니 확인하는 것을 추천합니다. 만약 Anaconda를 사용하다 나중에 사용자 이름을 바꾸는 경우엔 나중을 위해서 지웠다 다시 설치하는 것을 추천합니다!  Pytorch 설치저는 Python = 3.10.0 / Pytorch = 2.3.0 을 사용하였고, gpu가 ..

[인공지능] Entropy, CrossEntropy 이해

Information정보이론에서 Information(정보량) 은 불확실한 상황을 결정하기 위해 필요한 정보량으로 정의되곤 합니다. 예를 들면 제가 1~100의 수 중 1가지 수를 선택했고 여러분이 수를 골라서 up / down 혹은 answer 이라는 대답을 받을 수 있으면 log100 번 물어보면 문제를 확실하게 맞출 수 있습니다. 어떤 사건이 발생할 확률이 p라면 p = (모든 상태수)의 역수 로 생각할 수 있으며, 정보량을 수식으로 나타내면log(1 / p)나타낼 수 있습니다. 이 때 log는 밑이 2인 log를 말합니다. 아래 예시를 통해 이해해보도록 하겠습니다.  해당 예시에선 그림으로 나타내기 위해 2^k 꼴의 확률을 사용했는데 수학적으론 1/3이나 1/7... 등 상관 없습니다  Entro..

[pytorch] CNN: 고양이, 개 분류 실습

해당 포스팅은 간단하게 코드를 어떻게 짰는지를 위주로 작성했습니다.사실... 정확도가 낮고.. 나중에 발전시킨걸 분석할라고 했는데.. 생각보다 잘 나와서 바로 올리게 되었습니다. 정보/인공지능 이론은 나중에 추가적으로 포스팅하겠습니다. 1. Datasetkaggle에 올라온 데이터를 이용했습니다.  Dogs vs. Cats | Kaggle www.kaggle.com class MyDataset(Dataset): def __init__(self, folder): super().__init__() self.url = f'./dataset/{folder}' self.transform = transforms.Compose([ transforms.Re..

[알고리즘 문제] 2316번 도시 왕복하기 2

출처 : https://www.acmicpc.net/problem/2316 1. 아이디어 접근기존의 네트워크 플로우 문제와 달리 추가된 조건이 한 가지 더 존재한다. 그것은 바로 "지난 노드는 더 지날 수 없다" 해당 조건을 구현하기 위해서 기존의 네트워크 플로우와 달리 이상한 방향으로 계획을 세우곤 했는데 해당 문제는 어떤 예제 상황에서 힌트를 얻을 수 있었다.  모든 간선의 최대 용량이 1일 때 1->2 로 가는 최대 유량은 2일 것이다. 하지만 우리가 구하고 싶은 답은 1이다. 여기서 우리가 관찰할 수 있는 것은 3으로 가나 4으로 가나 결국 5라는 공통된 지점이 존재하며 공통된 지점을 지날 때 연산 결과가 답을 도출한다는 결론을 내릴 수 있다.  해당 예시에서 5번은 검문소 혹은 공항과도 같다. ..

코딩/알고리즘 2024.05.01