Programming

푼 날짜 : 2024.09.05푼 문제 : [2470] / 두 용액사용한 언어 : python  푼 방법 :항상 범위를 잘 확인해야한다.위의 문제처럼 범위가 엄청나게 큰 경우 계산을 어떻게 하면 효율적으로 할지 잘 판단해야한다!! 이번 문제의 경우에는 음수값도 포함이 되며 0에 가까워야 하므로 절댓값이 가장 작아야 한다고 생각했다.또한 인접값을 계산하는 것이 아니라 배열 내 두 요소를 고려하여 0에 가까운 값을 만드는 것이 핵심이므로 절댓값 기준으로 정렬을 하고 시작했다. 이렇게 해서 가장 0에 가까운 값을 만드는 두 요소를 출력하는데, 이 때 값을 오름차순으로 출력해야 한다.  코드 :import sysN = int(sys.stdin.readline())lst = list(map(int, sys.std..
·Programming/SQL
SQL을 사용하다보면 종종 기존의 컬럼명이 아닌 별칭을 사용하게 되는 경우가 발생한다. 따라서, SQL에서 보통 컬럼 별칭을 사용할 때에는 as를 사용한다.SELECT 컬럼명 as 컬럼별칭 위와 같은 형태로 작성할 수 있다.  예시로, 학생들 중 가장 큰 키(HEIGHT)를 가진 학생의 키를 MAX_HEIGHT로 출력한다고 가정하자.다음과 같이 작성할 수 있다.SELECT MAX(HEIGHT) as MAX_HEIGHTFROM STUDENT 이렇게 HEIGHT 라는 컬럼명을 MAX_HEIGHT로 바꾸어 출력할 수 있다.  그렇다면 값에 다른 문자열을 추가할 때는 어떻게 하면 좋을까 ?답은 concat을 사용하는 것이다. 형태는 다음과 같다.SELECT concat('str1', 'str2', 'str3' ..
푼 날짜 : 2024.09.04푼 문제 : [1806] / 부분합사용한 언어 : python  푼 방법 :투포인터로 접근하였다.왜냐하면 범위자체가 N (10 ≤ N S (0 10,000이하의 자연수이기 때문에 매번 합을 구하는 것은 비효율적이므로 이전합에 가장 왼쪽 값을 빼주고 오른쪽 값을 더해가는 식의 투포인터로 풀었다. 가장 어려웠던 것은 index 계산이었다.결국... 약간 엉성하게 반례에 맞는 조건을 다시 한 번 걸어줌으로써 문제를 해결했다. 예를들면 아래와 같은 반례이다. 4 26 7 8 9 이런 경우에는 굳이 합을 구하지 않아도 각각의 원소가 S이상이기 때문에 최소의 길이는 당연히 1이 된다. 이번 코드에서는 미리 한 바퀴 돌면서 각 요소가 하나라도 S를 넘는다면 바로 1을 출력하게 하고 아닐..
푼 날짜 : 2024.09.03푼 문제 : [17478] / 재귀함수가 뭔가요?사용한 언어 : python  푼 방법 :(예제 출력의 예시를 바탕으로 작성)  재귀는 Base case 와 Recursive case로 구성된다.Base case는 탈출 조건이기 때문에 잘 설정해주는 것이 중요하다! 따라서, 그림으로 보았을 때 "재귀함수가 뭔가요?" 하고나서 답이 달라지는 순간이 분홍색 박스의 경우이다. 해당 위치에서 달라지는 답을 출력하고 return 시켜 재귀를 탈출해주어야한다. 또한 언더바로 재귀의 깊이를 표현하고 있는데 "____" 를 얼마나 곱해주어야 하나면,recursive(2)일 때 2-2 = 0 번 호출하고 recursive(1)일 때 2-1 = 1 번 호출하고 => ____recursive(..
푼 날짜 : 2024.08.19푼 문제 : [20291] / 파일정리사용한 언어 : python  푼 방법 :dot(.)을 기준으로 파싱하여 딕셔너리에 개수를 함께 저장하였다.확장자를 사전 순으로 정리해야 하므로 딕셔너리의 items()를 기준으로 정렬하여 출력하였다.  코드 : import sysN = int(sys.stdin.readline())myDict = {}for _ in range(N): file = sys.stdin.readline().rstrip() extension = file.split('.')[1] if extension in myDict: myDict[extension] +=1 else: myDict[extension] = 1 for name, num ..
푼 날짜 : 2024.08.18푼 문제 : [1326] / 폴짝폴짝사용한 언어 : python  푼 방법 :너비 우선 탐색으로 접근하였다.  어떤 징검다리에서 점프를 할 때는 그 징검다리에 쓰여 있는 수의 배수만큼 떨어져 있는 곳으로만 갈 수 있다.    이 부분이 중요한데 앞으로 가든 뒤로 가든 현재 위치의 징검다리의 수의 배수만큼만 이동한다는 거 !예시를 들자면 현재위치가 인덱스 4번이고 4번 징검다리에 쓰여 있는 수가 3이라면,  이렇게 1과 7로 이동할 수 있다.만약 배열이 더 길다면 인덱스 7, 10, 13, 16 .... 이렇게 갈 수 있다!   추가적인 테스트케이스를 첨부해보자면,    마지막 3번 테케는 질문게시판에 다른 분이 올려주신 부분을 손으로 그려봤다.  순서대로 N - 징검다리 수..
푼 날짜 : 2024.08.17푼 문제 : [1697] / 숨바꼭질사용한 언어 : python  푼 방법 :너비 우선 탐색으로 접근하였다. 이동 가능한 범위는 현재위치에 +1, -1, *2 였기 때문에 이를 배열로 만들어 반복문을 돌며 확인하도록 했다.나머지 방식은 일반적인 BFS와 동일하다.  코드 :import sysfrom collections import dequeN, K = map(int, sys.stdin.readline().split())px = ['-', '+', '*']def BFS(visited, v): queue = deque([v]) visited[v] = 0 while queue: now = queue.popleft() nx = now ..
푼 날짜 : 2024.08.16푼 문제 : [14248] / 점프 점프사용한 언어 : python  푼 방법 :너비 우선 탐색으로 접근하였다. 한 칸씩 이동하는 다른 문제와 달리 이번 문제는 돌다리의 숫자만큼 좌우로 움직일 수 있으므로 그 숫자를 저장하고 현재 위치에서 빼거나 더하는 방식으로 접근하였다.   코드 :import sysfrom collections import dequeN = int(sys.stdin.readline())graph_ = list(map(int, sys.stdin.readline().split()))graph_.insert(0, 0) # 문제를 편하게 풀기 위해 index 0 추가visited = [0 for _ in range(N+1)]start = int(sys.stdin..
__narrrrrmm
'Programming' 카테고리의 글 목록 (7 Page)