Algorithm Problem
![[python] 백준 - 1874. 스택 수열](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7mx9E%2FbtqLDOuKHFd%2FRofEvyF7PD0uM4pyqLho0K%2Fimg.png)
[python] 백준 - 1874. 스택 수열
🤔문제 해결 S2 | 스택 수열 스택을 이용한 문제 스택에 값이 있고 스택의 마지막 값이 뽑아야 하는 값이면 pop 그렇지 않을 때 넣어야할 숫자가 n보다 작으면 push 둘 다 아니면 break 스택에 계속 넣는 것을 먼저 생각하는 것보다 스택에서 값을 빼는 걸 먼저 생각해야 한다. ( 연속으로 뽑을 수 있기 때문 ) 💻소스 코드 import sys input = sys.stdin.readline numbers = [] n = int(input()) for _ in range(n): numbers.append(int(input())) stack = [] result = [] number = 1 idx = 0 while idx < n: if stack and stack[-1] == numbers[idx]..
![[python] 프로그래머스 - 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoY1uf%2FbtqLAyKy1UC%2FaVimkVRoJgI48BuBce2vY1%2Fimg.png)
[python] 프로그래머스 - 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1)
🤔문제 해결 압축문제 백준에서도 비슷한 문제를 풀어본적이 있다. 리스트를 실제로 자르지 말고 나뉘는 인덱스만 구해서 해결하는게 좋다. 인덱스를 구할 때는 네모의 시작점의 위치만 구한다. 거기에 + 네모의 길이만큼 해주면 네모를 완성시킴 시작점을 기준으로 하면 위의 경우는 0, 0 그리고 크기는 8이다. 다음 4가지는 0, 0, 4 0, 4, 4 4, 0, 4 4, 4, 4 다음 네모는 크기를 절반으로 나누고 x에 더하거나 y에 더하거나 x와 y 둘다 더해서 시작값을 만든다. 다음은 이 네모가 모두 같은 숫자인지 판별하는 것인데 네모중 하나의 값을 초기값으로 잡고 네모안의 값을 하나씩 비교해가면서 초기값과 다른게 하나라도 있으면 압축할 수 없으므로 또 그 네모를 잘라준다! 💻소스 코드 def solutio..
![[python] 프로그래머스 - 3진법 뒤집기 (월간 코드 챌린지 시즌1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyygwy%2FbtqLuBITKx3%2FHpA4XCAt3f1KTcXEyXuSJK%2Fimg.png)
[python] 프로그래머스 - 3진법 뒤집기 (월간 코드 챌린지 시즌1)
🤔문제 해결 3진법으로 만든다. 뒤집지마라 stack구조로 문자열을 쌓으면 저절로 뒤집은 형태가 나온다. 10진법으로 바꿔준다. 문자열은 앞에서부터, 3의 n승은 뒤에서부터 만들어준다. 💨 실제 대회시간 때 급하게 풀다가 n 이 3보다 작을 때 처리를 안해줘서 한두문제 틀리고 넘어갔다. ( 시간 깜빡하다가 늦게 입장 함😂 ) 💻소스 코드 def solution(n): answer = 0 # 3진법 mok = 0 nmg = 0 number = '' while True: mok = n // 3 nmg = n % 3 number += str(nmg) if mok < 3: number += str(mok) break n = mok print(number) # 10진법으로 바꾸기 leng = len(number)..
![[javascript] 프로그래머스 - 네트워크](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUQd3G%2FbtqLephh1QQ%2FKE5ZL1GZZVVTYZAXVpF9M1%2Fimg.png)
[javascript] 프로그래머스 - 네트워크
🤔문제 해결 Lv3 | DFS 몇개의 싸이클이 있는 지 찾아야 한다. DFS(BFS)를 이용해도 무방하다. 전체 네트워크 중 하나를 차례로 선택한다. DFS로 visited를 체크하며 돌린다. DFS가 끝나면 그게 한 싸이클이 된다. (네트워크의 수) 아직 방문하지 않은 나머지 네트워크를 하나씩 차례로 선택하면서 위의 과정을 반복한다. 💻소스 코드 function solution(n, computers) { var answer = 0; let visited = Array(n).fill(0) let stack = [] for (let i = 0; i 0)..
![[javascript] 프로그래머스 - 단어 변환](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDa9Qi%2FbtqLhQk6fkK%2FVikx7jcrIwt62AbKu94ck0%2Fimg.png)
[javascript] 프로그래머스 - 단어 변환
🤔문제 해결 Lv3 | BFS begin 에서 시작하여 BFS 탐색 BFS는 target과의 거리를 알 수 있으므로 target과의 최단거리를 구해서 답을 출력 아래의 코드에서는 visited와 words_obj를 사용했지만 잘 짜보면 words_obj 하나로 충분히 구현할 수 있다! 💻소스 코드 function solution(begin, target, words) { var answer = 0; // 타겟이 워드에 없는 경우 if (!words.includes(target)) { return answer } let n = words.length // visited 와 queue let visited = Array(n).fill(0) let q = [begin] // 단어의 인덱스를 객체에 저장 con..
![[javascript] 프로그래머스 - 두 개 뽑아서 더하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5SKS2%2FbtqK2X40f9N%2FgK8fwsIo2vojx34d3i6Lx0%2Fimg.png)
[javascript] 프로그래머스 - 두 개 뽑아서 더하기
🤔문제 해결 1. 2중 포문을 이용하여 서로 다른 2 숫자를 더한 값을 배열에 담는다. 2. 중복을 제거한다 set 3. 정렬한다. 💨 💻소스 코드 function solution(numbers) { var answer = []; for ( var i = 0; i { return a-b }) return result; } 📕문제 확인 출처: 프로그래머스 링크: https://progra..