알고리즘 166

[Python/프로그래머스]수식최대화_[구현]

https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221021 뭔가 stack 2개를 이용하고 combination or permutation을 쓸것같다. 예상은 했으나 구현에 실패...😓 다음에 이 문제를 풀때는 꼭 구현에 성공했으면 좋겠다. ✌2022-10-21 다음에 이 문제를 풀어봤는데 못풀었다...ㅎㅎ 이번에도 permutations를 이용하고 deque 2개를 이용해서 연산할 것같았다. 좀 더럽게라도 expressions를 숫자..

[Python/프로그래머스]n^2배열자르기_[구현]

https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아 또 풀었는데 시간초과😈 내가 효율적으로 코드를 짜는 법을 모르나보다. 시간초과 코드 : def solution(n, left, right): answer = [] mp = [[0]*n for _ in range(n)] for i in range(n) : mp[0][i] = i for j in range(1,i+1) : mp[j][i] = i for j in range(i,-1,-1) : mp[..

[Python/프로그래머스]양과 늑대_(KaKao)_[DFS]

https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS인건 알겠는데 대체 이렇게 푸는 생각을 어떻게 하는거지..? for i in range(len(edges)) : parent = edges[i][0] child = edges[i][1] if vis[parent] and vis[child] == 0 : 위 코드를 통해서 내가 갈 수 있는곳은 다가보는거다. 그러다가 sheep > wolf 라면 답에 양의 숫자를 넣고 늑대가 더 많아진다면 ret..

[Python/프로그래머스]보석쇼핑_(KaKao)_[투포인터]

https://school.programmers.co.kr/learn/courses/30/lessons/67258 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221008 쉬워보여서 그냥 구현으로 만들어봤다. def solution(gems): answer = [] gem = set(gems) num = len(gem) for i in range(len(gems) - num+1) : tmp = set() for j in range(i,len(gems)) : tmp.add(gems[j]) if len(tmp) == num : answer.appen..

[Python/BOJ] 백준2138 전구와 스위치_그리디

이해하는게 참 어려웠던 문제다. 앞서 풀었던 행렬처럼 (https://what-am-i.tistory.com/408) 그리디이기 때문에 한번만 돌면서 다르면 바꾸고 이런 식일거라고 생각했다. 그런데 이 문제는 i-1, i, i+1 이 변경이되고 가장 앞과 가장 뒤는 2개씩만 변경되니까 어떻게 나눠야할지 막막했다. 찾은 방법은 바로! 내 앞에 있는 전구와 동일한 위치의 목표로 하는 전구가 다르면 나를 변경시킨다! 앞에 있는 전구를 보기 때문에 첫번째 있는 전구는 볼 전구가 없다. 그래서 첫번재 전구를 키는 경우, 안키는 경우 두가지를 확인하여 최소값을 찾으면 된다. # 0은 1으로 , 1은 0으로 def change(num) : return 1 - num def flip(state,cnt) : # 첫번째 ..

[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/BOJ] 백준 2615 오목_구현

처음에 구현은 어떻게 했는데 세부적인 내용에서 틀렸나보다.. 결국 구글링으로 답을 찾아봤다. 내가 아직 많이 부족하구나.. 방향은 4개다. 8개가 아니고 왜냐하면 시작하는 좌표중 왼쪽, 위를 구하라고 했으므로 왼쪽, 위부터 시작하는 방향만 보기 때문이다. 1. 만약 1또는 2를 찾았다면 cnt 를 1로 해서 탐색을 시작한다. 2. while 문으로 좌표안에 있는지 같은지 여부를 파악하며 계속 진행한다. 3. 만약 5개가 되었다면 6목인지 아닌지 판변한다. 4. 만약 6목이면 continue 5. 6목이 아니라면 값과 좌표를 찍고 문제를 끝낸다. 코드 : dx = [0,1,1,-1] dy = [1,0,1,1] if __name__=="__main__" : n = 19 mp = [list(map(int,in..

[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밖에 못만든다. 앞에서부터 밖에 못묶는다. 근데 묶고 나서는 그 안에서 순서를 바꿀 수 있..