알고리즘 97

20231101_TIL(알고리즘-대표값,정다면체_웹서비스구조 첫번째)

오늘도 역시 알고리즘 문제를 풀었다. 섹션2 - 4.대표값 문제이다. import sys if __name__=="__main__" : n = int(input()) arr = list(map(int,input().split())) avg = int(sum(arr)/n+0.5) similar = sys.maxsize score, num = 0,0 for idx, x in enumerate(arr) : tmp = abs(x-avg) if tmp < similar : # 차이가 적다면 similar = tmp score = x num = idx +1 elif tmp == similar and score < x : # 차이가 같지만 점수가 크다면 score = x num = idx +1 print(avg,nu..

취업/TIL 2023.11.01

[Python/프로그래머스]점 찍기_구현

https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 참고블로그를 보면 알수있지만 몇자 적어보자면 피타고라스 법칙을 이용해서 풀수있다. ( d^2 = x^2 + y^2 ) 에서 x를 이항하면 ( y^2 = d^2 - x^2 ) x를 k 간격으로 돌리면서 모든 x를 다 해보면서 y의 최대값을 구한다. y의 최댓값에서 k를 나누어 개수를 구한다. 이를 다 더해서 answer을 구해 return 한다. 1 . k의 배수만 가능하므로 for문을 k간격으로..

[Python/프로그래머스]합승택시요금_플로이드와샬

https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 플로이드 와샬 백준 문제 풀이 : https://what-am-i.tistory.com/425 [Python/BOJ] 백준11404 플로이드_플로이드와샬 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보..

[Python/BOJ] 백준11404 플로이드_플로이드와샬

https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 이전에 했던 다익스트라는 한 노드에서 모든 노드로의 정점을 찾는 방법이었다. 이와 비슷한 플로이드 와샬은 모든 노드에서 모든 노드로의 최단 경로를 찾는 알고리즘이다. 2차원 테이블에 dp를 이용해 최단거리 정보를 저장하며 구한다. 시간복잡도는 O(n^3)로 오래걸린다. 삼중 for문을 사용하기 때문이다. 노드나 간선의 개수가 많으면 플로이드 와샬이 아닌 다익스트라를 고려해보시라 아무래도 dp이기 ..

[Python/BOJ] 백준2212 센서_그리디

https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 5번을 읽었는데 문제가 잘 이해가 안되서 답을 찾아봤다.😂 그냥 쉽게 말하면 n개의 센서를 k개의 구간으로 나누기 더만!! 내가 독해력이 떨어지나....ㅋㅋㅋ 정렬을 이용하여 그리디 방식으로 풀이하였다. - 만약 집중국의 개수가 센서보다 크거나 같다면 0이다. 1) 센서들을 순서대로 만든다.(오름차순 정렬) 2) 센서들..

[Python/프로그래머스]경주로 건설_[BFS]

https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 from collections import deque dx = [0,1,0,-1] dy = [1,0,-1,0] def solution(board): n = len(board) def bfs(x,y,cost,dir) : vis = [[0]*n for _ in range(n)] vis[0][0] = 1 q = deque([[x,y,cost,dir]]) while q : x,y,co..

[Python/BOJ] 백준 1080 행렬_그리디

이 문제를 보고 든 생각 : 이거를 내가 어떻게 구해 🥴 그리디인가....라는 느낌이 들기는 했지만 어떻게 그리디하게 풀지 생각이 안나서 풀이를 찾아봤다. 역시 그리디였고 풀이는 내가 바꿀수 있는거만 바꾸고 이게 맞으면 다음 칸으로~ 내가 바꿀 수 있는 것만 신경쓰고 바꾼 다는게 우리 인생에서 꼭 필요한 생각같다. 내가 바꿀 수 있는 것과 없는것을 구분하는 지혜와 바꿀 수 있는 것에 집중하는 능력이 중요하다. 그냥 알고리즘 풀다가 드는 뻘생각...ㅋㅋㅋ 현재 내 위치만 보고 내 위치의 원소가 같은 위치에서의 B행렬과 일치하지 않는다면 뒤집기 때문에 그리디라고 한다. 근데 왜 이게 최소 횟수지? 순서대로 하는게 최소인가 왔다갔다하면서 최소로 바꿀수도 있는거 아닌가? 아 예를 들어 내부에 있는거 먼저 하고 ..

[Python/프로그래머스]순위검색_(KaKao)_[구현,bisect(이분탐색)]

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 으렵다. 레벨 2인데 이러면 어떡하지..ㅋㅋㅋㅋ 풀이과정 : 1. info를 공백을 기준으로 나눈다. 2. 점수와 나머지들을 각각 value, key로 구분한다. 3. key로 만들 수 있는 모든 조합을 combination을 이용해 만든다. 4. info_dict에 이 조합을 가진 지원자가 있음을 점수를 저장하면서 알려준다. 5. 저장한 점수들은 이분탐색을 이용할 것이므로 정렬해준다. 6. 쿼리..

[Python/프로그래머스]뉴스 클러스터링_(KaKao)_Counter이용

https://school.programmers.co.kr/learn/courses/30/lessons/17677 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 교집합일 때는 min을, 합집합일 때는 max로 하는 걸 어떻게 하지 고민하다가 너무 답답해서 구글링한 문제 그냥 Counter에서 &, |를 하면 해결된단다..... 그 후에 counter에서 elements를 통해서 문자들을 개수 만큼 만들고 그것의 개수를 센다. 코드 : from collections import Counter def solution(str1, str2): str1 = str..

[Python/프로그래머스]튜플_(KaKao)_문제 이해가 잘 안되요

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221013 문제가 이해가 잘 안되었다. 이게 무슨 소리람? 근데 질문하기에서 한 답변을 보고 이해가 갔다. [] 로 둘러쌓인 튜플은 순서가 달라지면 다른 튜플이지만 튜플로 만든 {}는 내부 순서가 달라져도 괜찮다!! 그러니까 [2,1]은 {1}을 만들 수 없다. [4,1,3,2]은 한자리수 {}로 4밖에 못만든다. 앞에서부터 밖에 못묶는다. 근데 묶고 나서는 그 안에서 순서를 바꿀 수 있..