전체 글

꾸준히 성장하는 개발자, 인피케이의 블로그입니다. 백준과 깃허브 등 여러 플랫폼에서 인피케이로 활동하고 있습니다.
·Language/Python
최근에 uv를 다룰 일이 있었는데, 사용했던 명령어들과 발생했던 문제 및 해결 방법 위주로 적어본다. UV란 무엇인가?uv는 파이썬 패키지 및 프로젝트 관리 도구로, Rust로 만들어져서 pip 등 다른 도구들에 비해 빠르다고 한다. UV 명령어 - 설치, 가상환경, 의존성 관련[참고] uv 설치 및 사용법 : https://tilnote.io/pages/67f2927b2a14e2a1ab482f5apip 이용해서 uv 설치 : pip install uvuv 버전 확인 (설치 여부 확인을 위해) : uv --version프로젝트 생성 : uv init {프로젝트 이름}설치된 Python 버전 확인 (방법 1) : py -0설치된 Python 버전 확인 (방법 2) : uv python list[참고] 특정..
·Language/Java
몇 달 전에 개발자 면접 스터디를 하다가 받았던 질문이다.Java는 call by value(값에 의한 호출)일까, 아니면 call by reference(참조에 의한 호출)일까? 결론부터 말하자면, Java는 언제나 call by value로만 동작한다. 1. Call by value와 Call by reference란 무엇인가?우선 call by value와 call by reference가 각각 무엇인지 살펴보자. 1-1. Call by value의 개념Call by Value는 함수나 메서드를 호출할 때, 파라미터로 주어진 값에 대해 값 자체의 복사본을 만들어서 파라미터로 넘겨주는 방식이다.즉, 함수나 메서드 내부에서 그 복사본의 값을 아무리 변경해도, 원본 데이터에는 아무 영향도 미치지 못한다...
·Baekjoon
1. 문제 링크https://www.acmicpc.net/problem/25548 2. 들어가기 전에25547번 신기한 숫자 문제의 풀이를 정리하던 중, 25548번 문제가 시리즈로 존재한다는 사실을 알게 되었다.https://www.acmicpc.net/problem/25547 3. 풀이 방법(1) 정의문제에서 이미 $f(A, B)$ 가 정의되어 있고, 이 글에서는 설명을 위해 $F(k)$ 와 $S(k)$ 를 추가로 정의할 것이다.우선 $F(k) = (k$의 약수의 개수$)$ 로 정의하자.그리고 $S(k) = F(1) + F(2) + \cdots + F(k) = \sum\limits_{i = 1}^k F(i)$ 로 정의하자. (2) 25547번 풀이에서 밝혀진 사실25547번 신기한 숫자의 풀이에서, ..
·Baekjoon
1. 문제 링크https://www.acmicpc.net/problem/27963 2. 풀이 방법합금을 이루는 두 금속의 혼합 전 밀도를 각각 $d_1$, $d_2$, 혼합 전 질량을 각각 $m_1$, $m_2$, 혼합 전 부피를 $V_1$, $V_2$라고 하자. 그리고 혼합 후 밀도를 $d$, 혼합 후 질량을 $m$, 혼합 후 부피를 $V$라고 하자. 그러면 혼합 후 질량은 혼합 전 질량의 합이므로 $m = m_1 + m_2$ 이고, 혼합 후 부피도 혼합 전 부피의 합이므로 $V = V_1 + V_2$ 이다. 또한 $밀도 = \cfrac{질량}{부피}$ 이므로, $d_1 = \cfrac{m_1}{V_1}$ , $d_2 = \cfrac{m_2}{V_2}$ , $d = \cfrac{m}{V}$ 이 성립한다..
·Baekjoon
1. 문제 링크https://www.acmicpc.net/problem/33516 2. 접근 방법문자열에서 skeep 이라는 연속한 부분 문자열을 s 를 제외한 소문자 알파벳으로 바꿀 수 있다는 조건이 큰 힌트가 되었다.skeep 부분 문자열이 만들어지면 이를 와일드카드 문자 *로 바꿔서 다른 skeep 문자열을 만드는 데 사용할 수 있다는 의미이기 때문이다. 따라서 문자열에서 s 가 등장할 경우 스택에 넣어주고, k , e , p 가 등장할 경우 이전의 문자들을 확인하여 패턴과 일치하면 스택에 넣어주었고, 패턴과 일치하지 않는 문자가 등장할 경우 스택을 모두 비워주었다.또한 스택의 top이 p 인 경우에는 skeep 을 스택에서 제거한 후 와일드카드 문자 * 를 넣어주었다. 이때 skeep 문자열을 *..
·DBMS/Database
1. 이상 현상 (Anomaly)이상 현상은 데이터베이스를 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류이다.정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상이다. (1) 삽입 이상 (Insertion Anomaly)데이터를 삽입할 때 의도하지 않은 값까지 추가해야 해당 데이터를 테이블에 삽입할 수 있는 현상이다. 예를 들어 {student_id, course_id, department, grade} 를 저장하는 테이블이 있다고 가정하자.해당 테이블의 기본 키(PK)가 {student_id, course_id} 인 경우, 아무 강의도 수강하지 않은 학생은 course_id 가 없는 현상이 발생한다.그러나 course_id 는 기본 키이기 때문에 null 로 추..
·DBMS/Database
1. 트랜잭션 (Transaction)트랜잭션(Transaction)의 사전적 의미는 거래이다. 컴퓨터 과학 분야에서의 트랜잭션은 더 이상 분할이 불가능한 업무 처리의 단위를 의미한다.즉, 트랜잭션은 한꺼번에 수행되어야 하는 일련의 연산 모음을 의미한다. (1) 간단한 예시를 통한 트랜잭션 설명예를 들어, A가 B에게 송금하는 상황을 가정하자. A가 B에게 송금하는 행위는 크게 출금과 입금 두 개의 과정으로 이루어진다.우선 A의 계좌에서 송금할 금액만큼 차감한 다음, B의 계좌에 송금한 금액만큼 입금되어야 한다. 이때 출금만 되고 입금이 안되는 경우가 발생하면 안되므로, 트랜잭션이 필요하다.즉, 출금과 입금 두 과정은 동시에 성공하거나, 그렇지 않다면 동시에 실패해야 한다.이렇게 두 과정을 (atomic..
·Baekjoon
1. 문제 링크https://www.acmicpc.net/problem/2532 2. 풀이 방법각 동물의 번호, 동물의 활동영역의 왼쪽 위치, 오른쪽 위치가 입력으로 들어온다.이 중에서 번호는 필요하지 않으므로, 왼쪽 위치와 오른쪽 위치를 묶어서 저장해주었다.// 헤더using pii = pair;// main 함수vector animals;for (int i = 0; i > idx >> l >> r; animals.emplace_back(l, r);} 우선 활동영역을 정렬했는데, 왼쪽 위치에 대해 내림차순이 되도록, 왼쪽 위치가 같은 경우에는 오른쪽 위치에 대해 오름차순이 되도록 정렬했다.struct cmp{ bool operator()(const pii &a, const pii &b) co..
·Baekjoon
1. 문제 링크구슬 탈출 : https://www.acmicpc.net/problem/13459구슬 탈출 2 : https://www.acmicpc.net/problem/13460구슬 탈출 3 : https://www.acmicpc.net/problem/15644구슬 탈출 4 : https://www.acmicpc.net/problem/15653 2. 풀이 방법이 문제를 처음 읽었을 때 확실한 방법과 코드가 떠오르지 않아서 다소 당황스러웠다.최근에 감을 조금 잃어버린 탓인지.. 오랜만에 감 잡기에 굉장히 좋은 문제라고 느꼈다. 우선 초기 상태에서 상하좌우 4방향으로 구슬을 굴리면서 가능한 경우를 모두 탐색해야 한다.빨간 구슬이 구멍에 빠지는 경우가 나올 때까지 모든 경우를 탐색해야 한다. 그리고 이미 탐..
·Baekjoon
1. 문제 링크https://www.acmicpc.net/problem/1307 2. 풀이 방법마방진의 크기 n이 홀수인 경우, 4의 배수인 경우, 4의 배수가 아닌 2의 배수인 경우로 나누어서 다르게 구현했다.마방진을 만드는 방법은 다른 글에 이미 잘 정리가 되어있어서, 링크로 대신한다. 먼저, n이 홀수인 경우에는 아래 글을 참고했다.https://destiny738.tistory.com/244 홀수 마방진홀수 마방진은 마방진을 만드는 것중에서 가장 간단한 형태이다. 위에서 파란원이 만들려고 하는 마방진이다.(크기 3짜리 3*3 마방진을 만든다.) 다음과 같은 과정을 따르며 마방진을 완성해간다destiny738.tistory.com 다음으로, n이 4의 배수인 경우에는 아래 글을 참고했다. (위의 글..
인피케이
인피케이 블로그