알고리즘 55

[리트코드 leetcode] 2574. Left and Right Sum Differences (파이썬/Python)

목차 개요 Left and Right Sum Differences - LeetCode 0을 인덱스로 시작하는 배열이 있다. 이 배열에 대해 leftsum과 rightsum을 구하고 그 둘의 차의 절대값을 원소로 하는 answer 배열을 구하라. leftsum과 rightsum은 이전 원소의 누적합. 자세한 건 예시 참조. 풀이 문제에 나온 그대로 따라가면 된다. 대충 하면 3개의 반복문을 쓰게 되는데, 그렇게 해도 시간 초과는 나지 않는다(내가 이걸 썼다). 그렇지만 한번의 반복문으로 구하는 방법도 있다. 코드 class Solution: def leftRigthDifference(self, nums: List[int]) -> List[int]: leftsum = [0] rightsum = [0] for..

[프로그래머스] 진료과별 총 예약 횟수 출력하기 (MySQL)

목차 개요 코딩테스트 연습 - 진료과별 총 예약 횟수 출력하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 GROUP BY를 사용하는 문제. 새로 알게 됐는데, 그룹으로 묶기 전 조건을 걸 수 있다. WHERE절을 무조건 쓰면 안 된다는 법은 없다. 코드 SELECT MCDP_CD "진료과 코드", COUNT(MCDP_CD) "5월예약건수" FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY MCDP_CD ORDER BY COUNT(MCDP_..

[프로그래머스] 중복 제거하기 (MySQL)

목차 개요 코딩테스트 연습 - 중복 제거하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 DISTINCT를 사용해보는 문제. 고유값을 꺼낼 수 있다. 코드 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS ;

[프로그래머스] 동물 수 구하기 (MySQL)

목차 개요 코딩테스트 연습 - 동물 수 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 COUNT 사용해보는 문제. SQL 고득점 KIT를 지금 도전하는 사람이 있다면 문제 푸는 순서를 나처럼 하지 말라고 꼭 알려주고 싶다. 코드 SELECT COUNT(*) FROM ANIMAL_INS ;

[프로그래머스] 최솟값 구하기 (MySQL)

목차 개요 코딩테스트 연습 - 최솟값 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 MIN을 사용해보는 문제 코드 SELECT MIN(DATETIME) FROM ANIMAL_INS ;

[프로그래머스] 최댓값 구하기 (MySQL)

목차 개요 코딩테스트 연습 - 최댓값 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 MAX 사용해보는 문제 코드 SELECT MAX(DATETIME) FROM ANIMAL_INS ;

[백준] 9935번: 문자열 폭발 (파이썬/Python)

목차 개요 9935번: 문자열 폭발 (acmicpc.net) 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 풀이 스택을 활용하는 문제. 출력할 리스트를 만들고 입력받은 문자열에서 문자를 하나하나 출력 리스트에 넣으면서 폭발 문자열이 있는지 체크한다. 있으면 해당 문자열을 바로 없애고 이후 계속 문자를 하나씩 넣으면 된다. 스택으로 차곡차곡 출력 문자열이 쌓이다가 폭발할 문자열이 만들어진다면 그 놈만 날리고 다시 문자열을 쌓는다는 것. 원리는 어렵지 않다. 코드 inlst = input() ex..

[백준] 2444번: 별 찍기 - 7 (파이썬/Python)

목차 개요 2444번: 별 찍기 - 7 (acmicpc.net) 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 풀이 문제 설명이 간략해서 좋구만. 이런 문제가 간단해보이지만, 인덱스에 조건을 걸거나 응용하는 류의 문제라서 막상 해보면 꽤 귀찮은 문제이기도 하다. 규칙을 찾는 것 자체도 코테를 하는데 있어서는 중요한 역량이기도 하고. 보아하니 중간을 두고 대칭의 모양을 띄고 있으니 가운데가 0 정도의 값, 그리고 위 아래로 이산하면 될 것 같다. 그렇다면 abs를 써서 절대값을 활용하면 되겠다. 별의 개수는 홀수이다. abs에 2를 곱하고 1을 빼는 식으로 하면 될 것 같다. 공백 수는 432101234이다. 절대값을 그대로 활용하면 될..

[백준] 10811번: 바구니 뒤집기 (파이썬/Python)

목차 개요 10811번: 바구니 뒤집기 (acmicpc.net) 10811번: 바구니 뒤집기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 풀이 리스트 속에서 특정 범위를 주면 그 범위의 값을 거꾸로 만드는 문제. 파이썬에서는 reversed이라는 내장함수를 통해 원소들은 거꾸로 된 iterable한 객체를 만들 수 있다. 코드 import sys input = sys.stdin.readline N, M = map(int, input().split()) inlst = list(range(1, N+1)) for _ in range(..

[백준] 25682번: 체스판 다시 칠하기 2 (파이썬/Python)

목차 개요 25682번: 체스판 다시 칠하기 2 (acmicpc.net) 25682번: 체스판 다시 칠하기 2 첫째 줄에 정수 N, M, K가 주어진다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 풀이 단계별로 풀어보기에 있는 문제라서 이 문제의 분류가 누적합이라는 것을 아는 상태였으나, 그럼에도 푸는 것이 쉽지 않았다. [BAEKJOON] 25682 체스판 다시 칠하기 2 (tistory.com) 결국 이 분의 글을 참조하여 이해하고 풀어냈다. 무작위로 색칠되어 있는 격자판이 있고, 거기에서 원하는 길이만큼 정사각형 모양으로 잘라내 체스판으로 삼고 싶은 것이다. 이때 무작위로 색칠이 된 판이니 아무리 원하는 곳을 잘라내더라..