본문 바로가기

분류 전체보기117

마트 관리 프로그램 https://github.com/SSUUN/test_project.git GitHub - SSUUN/test_project Contribute to SSUUN/test_project development by creating an account on GitHub. github.com 4명 프로젝트 나의 역할은 buy2.py 파일 사용자 물건구매와 관리자 2023. 4. 9.
연속된 부분 수열의 합 https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 약간 어려운듯했지만 처음과 끝만 k 값에 따라 움직이면 간단하다 구간의 시작을 a 끝을 b라고 할 때 a~b 사이의 값의 합이 k 보다 크다면 이때는 k 보다 작게 만들어야 한다 수열에 음수는 없으니 a 와 b 을 조절하여 부분합을 작게 만들려면 시작점인 a를 한 단계 앞으로 움직여야 한다 그러면 구간이 줄어드니까 당연하게 합도 줄어든다 반대로 현재의 부분합이 k보다 작다면 이때는 부분합을 크게.. 2023. 4. 8.
slqd 68 이 자격증은 이제 제 겁니다 2023. 4. 7.
1020. Number of Enclaves - python https://leetcode.com/problems/number-of-enclaves/ Number of Enclaves - LeetCode Can you solve this real interview question? Number of Enclaves - You are given an m x n binary matrix grid, where 0 represents a sea cell and 1 represents a land cell. A move consists of walking from one land cell to another adjacent (4-directionally) land leetcode.com leetcode는 데일리 문제가 약간 비슷한 유형에서 나오니까 어제와 같은 bfs 문제.. 2023. 4. 7.
1254. Number of Closed Islands - python https://leetcode.com/problems/number-of-closed-islands/description/ Number of Closed Islands - LeetCode Can you solve this real interview question? Number of Closed Islands - Given a 2D grid consists of 0s (land) and 1s (water). An island is a maximal 4-directionally connected group of 0s and a closed island is an island totally (all left, top, right, leetcode.com 아마 제일 많은 거 같은 문제 유형 bfs/dfs 일단 .. 2023. 4. 6.
N개의 최소공배수 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 최소공배수 구하는 문제 원래 2개의 수에서 구하지만 이건 n 개의 수에서 구한다 모든 약수 중 최대 약수의 곱이 최소공배수이다 그러므로 모든 수의 약수를 구하고 그 약수 중 최대가 되는 개수를 찾아서 제곱해 준다. 그리고 그 제곱한 수를 모두 곱하면 끝 def solution(t): d1={} s=1 def f(n): i=2 d={} while n!=1: if n%i==0: d.setdefault.. 2023. 4. 5.
2405. Optimal Partition of String https://leetcode.com/problems/optimal-partition-of-string/description/ Optimal Partition of String - LeetCode Can you solve this real interview question? Optimal Partition of String - Given a string s, partition the string into one or more substrings such that the characters in each substring are unique. That is, no letter appears in a single substring more than o leetcode.com 문자열을 분할하는데 같은 문자가 .. 2023. 4. 4.
과제 진행하기 https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 잘못 이해했다 시간이 많이 걸렸다 이런 화가 난다 def solution(t1): t1.sort(key=lambda x:x[1]) t1=list(map(lambda x:[x[0],int(x[1].split(":")[0])*60+int(x[1].split(":")[1]),x[2]],t1)) t3=[] t2=[] lll=0 while len(t1)!=1: a=t1[0][1]+int(t1[0].. 2023. 4. 3.
저자 별 카테고리 별 매출액 집계하기 https://school.programmers.co.kr/learn/courses/30/lessons/144856 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 테이블이 3개니까 최소 조인은 2번이지만 조인이 3번이나 들어간다 그리고 중간에 서브 쿼리까지 있으니까 많이 복잡해짐 그래도 이렇게 해서 원하는 조건을 모두 만족하는 데이터를 걸러낼 수 있다. 각각 테이블에 조건이 있으니까 처음에는 서브 쿼리로 해당하는 조건의 데이터만 가져오고 그 조건에 맞는 데이터만 다시 조인한다 select a.author_id,d.AUTHOR_NAME,a.category,.. 2023. 4. 2.
주식가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 릿 코드인가 언제 한번 풀어본 거 같다 이런 문제 그때 알았던 스택 스택을 모르면 일반적으로 시간 복잡도가 n**2라는 비효율적인 결과가 나온다 핵심은 지금 수보다 큰 수가 언제 나오는지이다 하나씩 스택에 쌓다가 제일 마지막 보다 큰 수가 나오면 마지막보다 작아질 때까지 스택에서 마지막 수를 계속 빼준다 어차피 큰 수를 만나면 그보다 작은 건 다 제거되기 때문에 정렬이나 순서는 신경 쓰지 않아도 .. 2023. 4. 1.
영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2가지 조건 1번 - 동일한 단어가 반복하면 패배 2번 - 앞사람의 마지막 알파벳과 첫 번째 알파벳이 같으면 패배 1번은 단어 카운트해서 2가 되면 리턴 2번은 변수에 앞사람의 알파벳 저장하여 같으면 리턴 def solution(n, words): d={} a=words[0][0] for s,i in enumerate(words): if a!=i[0]:return[s%n+1,s//n+1] a=i[.. 2023. 3. 31.
네이버 영화리뷰 크롤링 bs4 전에 한 네이버 평점 크롤링과 비슷하다 다른 건 그때는 간단한 한마디? 와 평점이 리스트로 여러 개 있었지만 이건 그 평점에 대한 자세한 리뷰가 있다 한 페이지에 15개의 목록이 있으니까 이건 15배 정도 url을 가져와야 한다 당연히 시간도 더 많이 걸리고 그래서 빠르게 해결하기 위해 multiprocessing을 사용한다 한 번에 하나의 url 요청을 하고 요청이 올 때까지 기다리다 완료되면 다음 걸 하는 게 아니라 하나 요청하고 기다릴 동한 다음 걸 요청하고 이런 식으로 동작해서 훨씬 빠르다 사용법은 대충 객체 하나 만들고 프로세스 몇 개 쓸지 정해주고 그냥 map 함수로 실행시킬 함수에 변수를 대입하면 된다 multiprocessing 을 사용하지 않았을 때보다 10배 이상은 빠른 듯 참고로 이전.. 2023. 3. 30.
네이버 영화평점 크롤링 (python) bs4 네이버 영화 평점 크롤링 requests로 주소를 받아오는데 페이지 번호만 하나씩 증가시켜 주면서 다음 페이지를 가져온다 페이지 조작이 필요 없기 때문에 BeautifulSoup를 사용해서 selenuim보다 빠르게 정보를 가져온다. 원하는 정보의 태그 값을 확인해서 각각 받아오고 하나의 리스트에 넣어 수집이 끝나면 데이터 베이스로 저장 중간에 에러가 나면은 에러 정보를 출력하고 데이터 베이스를 재접속한다 주의할 점은 무한 루프이기 때문에 이상한 에러가 나도 계속 돌아간다 무한 루프 사용 시 주의 import requests from bs4 import BeautifulSoup import sqlite3 import time import datetime # sqlite3 데이터 베이스 사용 conn=sq.. 2023. 3. 29.
이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자열에서 0을 제거하고 리턴 한 문자열의 길이를 다시 이진수로 바꾸고 반복 0과 1 밖에 없으니까 그냥 replace로 제거하면 간단하다 그럼 바로 남는 문자열 길이 나오고 그 길이를 다시 이진수로 바꾸고 파이썬이라 이렇게 간단한 듯 bin 함수는 문자열로 리턴하고 앞에 이진수라는 표시가 있어서 그거 제거하고 가져온다 def solution(s): ss=0 n=0 while s!="1": l=l.. 2023. 3. 28.
다단계 칫솔 판매 https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 제목부터 정신 나간 문제 정신이 나갈 거처럼 어렵지는 않다 모두가 아는 그런 것 제일 아래는 판매금액의 10%를 위로 상납한다 그렇게 연어처럼 거슬러 올라가다 보면 결국 가장 위는 아무것도 안 해도 돈이 쌓인다 어쨌든 이 망할 구조를 만들어보자 일단 판매원과 그 직속 상사 리스트가 주어지면 관리하기 편하게 딕셔너리를 이용해 부하를 key로 상사를 value로 만들어준다 그리고 각각 부하직원에 판매.. 2023. 3. 27.
자동차 대여 기록 별 대여 금액 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/151141 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 버릇이 없지만 쉬운 편인 sql 문제들 그래도 좀 난이도가 있는 편이라 길어졌다 3개의 테이블이 연관되어 있어서 n-1 번 즉 2번의 조인을 하고 조인 내부에서는 서브 쿼리 써서 필요한 값을 뽑는 과정들이 복잡하다 윈도우 함수를 몰랐으면 더 복잡해졌을 거 같은데 sqld가 이런 도움을 주다니 나머지는 운명에 맡기겠다 SELECT b.HISTORY_ID,(b.END_DATE-b.START_DATE.. 2023. 3. 26.
7569.토마토 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 이제 전설의 토마토의 정체가 밝혀진다 내가 처음 풀었던 bfs/dfs 문제다 처음에는 뭔지 모르고 풀었지만 알고 보니 bfs였다 이때 만든 코드가 기본이 되어서 점차 발전하고 지금은 이 토마토와 문제는 쉽게 풀 수 있다 고맙다 토마토 하지만 먹지는 않는다 2023. 3. 25.
광물 캐기 곡괭이가 광물을 보다 적다면 일단 앞에서 몇 개까지 가능한지 뽑는다 그리고 뽑은 광물은 순서가 상관없으니까 곡괭이 했을 때 피로도가 몇씩 다는지 확인한다 그러면 그 합이 가장 큰 광물들이 가장 좋은 곡괭이로 때려야 함 순서대로 곡괭이 소모하면서 피로도 더해준다 원하는 단어나 문장을 입력해 주세요. def solution(pic, t): a=b=c=0 l=[] for n,i in enumerate(t,start=1): if i[0]=="d": a+=1 elif i[0]=="i": b+=1 else: c+=1 if n%5==0: l.append([a,b,c]) a=b=c=0 if a+b+c!=0: l.append([a,b,c]) l=l[:sum(pic)] t=sorted([(i[0]*1+i[1]*1+i[2].. 2023. 3. 24.
10026.적록색약 https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net 일반적인 bfs 문제 2차원 이상 행렬이 주어지고 어디 길을 찾던지 섬의 개수 그런 거 이런 모든 형태에 적용하는 하다 이게 알고리즘의 힘인가 어쨌든 토마토에게 고마워하자 다른 건 다 같은데 2가지 경우라 리스트도 2개 만들었다 지나가면서 길에 x 표시를 하는 거라 2번 돌리면 맵이 망가져있어서 2개로 해줘야 함 그리고 색칠한 부분의 개수니까 그냥 한 번이라도 함수가 실행되면 한 개의 구역.. 2023. 3. 23.
2492. Minimum Score of a Path Between Two Cities https://leetcode.com/problems/minimum-score-of-a-path-between-two-cities/ Minimum Score of a Path Between Two Cities - LeetCode Can you solve this real interview question? Minimum Score of a Path Between Two Cities - You are given a positive integer n representing n cities numbered from 1 to n. You are also given a 2D array roads where roads[i] = [ai, bi, distancei] indicates that leetcode.com 그.. 2023. 3. 22.
당구 연습 https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이런이런 1레벨에서 2레벨로 올라가다니 충분히 어려웠다 처음에 무슨 이상한 방법 다 생각해도 틀려서 풀지 못할뻔했지만 그딴 건 없다 결국 힌트는 입사각과 반사각이 같다는 것 공이 튕기는 방향으로 선을 그으면 닮음 삼각형 2개가 생긴다 밑변의 길이는 알 수 있고 각도가 같으니까 서로 비율도 일정해서 각각 cos, sin 값의 비율을 구해서 적용하면 거리도 구할 수 있다 생각보다 간단하게 끝난다 모.. 2023. 3. 21.
우박수열 정적분 https://school.programmers.co.kr/learn/courses/30/lessons/134239 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 좀 알고 와라 우박 수열을 정적분 한다 어차피 x 가 1씩 증가하고 y 증가량이 직선이기 때문에 그냥 양 끝점 더해서 2로 나눠주면 된다 그런데 구간을 1, -2라는 식의 개소리를 해서 화가 났지만 다행히도 앞에 값은 시작점 뒤에 -는 끝점부터 거리라는 걸 알았다 지금 이렇게 설명해도 이 새끼 뭐라는 거야라고 생각하는 너를 위한 설명은 더 이상 없다 어쨌든 나머지는 수열이 1이 될 때까지 .. 2023. 3. 20.
게임 맵 최단거리 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어디선가 토마토를 풀면서 생각해낸 방법 이런 2차원의 길 찾기나 미로 같은 문제에는 적용 가능하다 그리고 이게 bfs/dfs라는 걸 알았다 일단 지금 위치에서 가능한 곳을 탐색한다 사방으로 다음 좌표값이 0보다 크고 행의 개수나 열의 개수보다 작아야 하고 여기에서 특징은 0이면 못 가는 곳이다 조건을 만족한다면 만족하는 좌표로 가고 좌표의 값을 0으로 바꿔 못 가게 한다 이렇게 하지 않는다면 같은 .. 2023. 3. 19.
2개 이하로 다른 비트 https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이진수에서 본인보다는 크면서 가장 작은 수 비트는 최대 2개까지 조작 가능하다 이진수는 0또는 1만 있어서 0이 존재하면 가장 뒤에 있는 0을 1로 바꾸면 된다 그게 본인보다는 크면서 가장 적게 더한 거니까 그리고 더 작게 만들려면 0을 1로 바꾼 뒤에 있는 1은 0으로 바꿔준다 본인보다 작아지지 않으면서 최대한 작게 만들 수 있는 방법이니까 그리고 0이 존재하지 않는다면 가장 앞에 1을 더해주고.. 2023. 3. 18.
점찍기 https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 구간에서 d 보다 작은 거리에 있는 점의 개수이니까 k의 배수만큼 움직이면 서 중심이 원점이고 반지름이 d인 원의 높이보다 작은 점의 개수를 구하면 된다 def solution(k, d): s=0 d1=d**2 for i in range(0,d+1,k): s+=(d1-i**2)**0.5//k+1 return s 2023. 3. 17.
유사 칸토어 비트열 https://school.programmers.co.kr/learn/courses/30/lessons/148652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 일단 5배씩 문자열이 늘어나서 20번만 한다고 해도 5**20이다 엄청 큰 수라서 저거 다 돌려서 계산하는 건 불가능하다 중요한 건 같은 패턴이 반복한다는 거다 처음 5개 그리고 다음은 25개인데 처음에 1~5 ,5~10 15~20,20~25 구간은 바로 전 단계의 전체를 반복한다 n 번째 단계를 5구간으로 나누었을 때 처음 1,2 ,4,5 구간은 n-1 번째 구간의 전체 값이다 3번째 구간은 .. 2023. 3. 16.
호텔 대실 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 모든 손님을 받으려면 방이 최소 몇 개 필요하냐 일단 시작과 끝 시간이 주어진다 그러면 끝나는 시간 10분 후 다른 사람을 넣는다 딕셔너리로 방을 만든다 일단 입장 시간순으로 정렬하고 먼저 온 사람 1번 방에 넣고 2번째 온 사람부터 1번 방부터 끝나는 시간보다 크면 1번 방에 넣고 아니면 새로 2번 방을 만들어 2번 방에 넣는다 이런 식으로 반복하면 방이 가득 차 있을 때만 만드니까 최소로 만.. 2023. 3. 15.
단어변환 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제는 알고 와야지 단어 2개와 단어가 들어있는 리스트 하나 주면 이런 거도 귀찮다 그냥 바로 설명한다 문제에 dfs/bfs라고 써져있어서 이게 힌트인 건지 어쨌든 바로 생각이 났다 처음 단어에서 갈 수 있는 단어 선택 그리고 그다음 가능한 거 선택 이런 식으로 반복하다가 타겟 문자가 나오면 깊이를 재설정 해주면 된다 갈 수 있는 길은 단어 길이만큼 반복해서 일치하는 개수가 단어 길이-1 과 같으.. 2023. 3. 14.
101. Symmetric Tree https://leetcode.com/problems/symmetric-tree/ Symmetric Tree - LeetCode Can you solve this real interview question? Symmetric Tree - Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center). Example 1: [https://assets.leetcode.com/uploads/2021/02/19/symtree1.jpg] Input: roo leetcode.com 이진 트리가 주어지면 서로 대칭 인지 확인하는 문제 일단 트리는 맨날 재귀만 써서 오늘도 재귀를 사용했다... 2023. 3. 13.
축구 https://www.acmicpc.net/problem/1344 1344번: 축구 홍준이는 축구 경기를 보고 있다. 그러다가 홍준이는 역시 두 팀 중 적어도 한 팀이 골을 소수로 득점할 확률이 궁금해 졌다. 축구 경기는 90분동안 이루어지고, 분석을 쉽게하기 위해서 경기를 5 www.acmicpc.net 문제는 알아서 5분에 0골 아니면 1골 넣는 경기 끝나면 두 팀 중 한 팀이라도 소수로 득점할 확률 일단 문제에서 확률이라는 말이 나오니까 확통이 바로 생각 나야 한다 어떤 방법으로 풀어야 할지 잘 모를 거 같지만 최근에 확통 비슷한 느낌의 수업을 들어서 그중에 한 가지가 생각났다 각각의 득점 확률이 주어지고 전체 나눠진 경기의 수도 주어졌다 확률 p와 q 그리고 전체 n 이 주어져서 pqn 이것은 어.. 2023. 3. 12.