썸네일 [JS ] 3차 방금그곡 https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 접근 문제의 핵심은 '#'을 어떻게 처리할 지가 관건이었습니다. 성공한 풀이는 정규표현식으로 문자열 뒤에 오는 '#'을 검색하고 해당 문자열과 '#'을 함께 소문자로 바꾸고 문제를 풀었습니다. 네오가 기억한 멜로디를 재생 시간 동안 반복된 멜로디에 split하여 나뉘면 해당되고 나뉘지 않다면 해당 곡이 아니라 판단하였습니다. function solution(m, musicinfos) { co..
썸네일 [JS] 전력망 둘로 나누기 -bfs https://school.programmers.co.kr/learn/courses/30/lessons/86971 [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/86971) 접근 방법 트리를 만든다. 노드 하나씩 방문한다. 2-1. 끊어질 노드를 방문 표시를 한다. 2-2. bfs로 방문할 노드들의 개수를 구한다. 차이는 (총 노드의 개수 - 방문한 노드 개수) - 방문한 노드 개수의 절대값이다. n=9, 첫번째 노드가 연결된 개수 = 8일 경우 두..
썸네일 [JS] 오픈채팅방 - Object와 Map의 차이점 https://school.programmers.co.kr/learn/courses/30/lessons/42888 문제 접근 record를 순회하면서 상태(입장/퇴장)를 확인한다. map을 사용해 id => nickname 쌍을 업데이트 한다. 퇴장(Leave)할땐 제외한다.(nickname변화 없으므로) 그 다음 record 반복을 다시 돌면서 map객체의 id 값(nickname)과 문자열을 result에 추가한다. function solution(record) { const recordMap = new Map(); const result = []; for (ele of record){ let [state, id, nickname] = ele.split(' '); if (state !== 'Leave..
[PYTHON/파이썬] Level2 [1차]캐시 - LRU/deque/maxlen https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr LRU 알고리즘 페이지 부재가 발생했을 경우 가장 오랫동안 사용되는 페이지를 제거하는 알고리즘 캐시 크기가 정해져 있고 캐시 크기 만큼 페이지를 받고 그 이상의 페이지를 받을때 만약 동일한 값이 있다면 가장 최신 값으로 변경 동일한 값이 없다면 가장 오래된 값을 제거하고 새로운 값을 넣는다. 문제 풀이 빈 스택을 만들어 도시를 하나씩 넣는다. 스택의 크기는 최대 캐시 크기이다. 만약 스택에 동일한..
[PYTHON/파이썬] level 2 괄호회전하기 - deque https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 문자열을 최대 문자열 길이까지 순차적으로 회전시켰을 때, 올바른 괄호 문자열이 되게 하는 x의 개수를 구하는 문제 soltuion - 성공 from collections import deque # 올바른 문자열인지 확인하는 함수(올바른 문자열이면 1를 올바르지 않다면 0을 반환함) def is_bracket_str(target_str): bracket = {'(':')','{':'}',..
썸네일 [PYTHON/파이썬] 2851 슈퍼 마리오 - 다중조건 내림차순 https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 문제 풀이 중간에 버섯을 중단한다면, 그 이후의 버섯은 모두 먹을 수 없다. => 뒤에서부터 하나씩 빼고 더한다. => 첫번째 버섯부터 열번째 버섯, 첫번째 버섯부터 아홉번째 버섯 ... 딕셔너리 key로 부분합을 value값으로 100 차이값의 절대값을 저장한다. 점수의 합은 최대한 100과 가깝고 동일한 차이값을 가진다면 더 큰 점수가 출력된다. => 1. 차이값을 오름차순으로 정렬하고, 2.부분합은 내림차순으로 정렬하여 첫번째 key값을 반환한다. so..
썸네일 [PYTHON/파이썬] 2563 색종이 https://www.acmicpc.net/problem/2563 2563번: 색종이 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 www.acmicpc.net 문제 풀이 크기가 1인 사각형은 4개의 좌표로 구성된다. 기준 좌표를 하나 정하고 그 좌표의 개수를 세서 크기를 구한다 (=> solution1 -sum으로 구하기) 또는 중복되지 않은 좌표의 개수를 구한다.( => solution2 - set으로 구하기) solution1-sum으로 구하기 import sys n = int(sys.stdin.readline().strip()) # 크기가 100*10..
썸네일 [PYTHON/파이썬] 1764 듣보잡 - Counter/Filter/setdefault https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 문제 풀이 듣도 못한 사람과 보도 못한 사람의 리스트를 저장한다. Counter 모듈을 이용해 중복된 개수를 딕셔너리로 받는다. 중복된 개수가 1 이상인 key값만 리스트에 저장하고 그 리스트의 길이을 출력한다. 리스트를 정렬하여 한 줄씩 출력한다. solution - 성공/ Counter와 filter를 활용한 풀이 from collections import Counter import sys ..
썸네일 [PYTHON/파이썬] Level2 행렬의 곱셈 - 3중 for문 / zip https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 안녕하세요 맨덕입니다. 오늘은 프로그래머스에서 행렬의 곱셈을 풀어봤습니다. 오랜만에 행렬의 곱셈을 하려다보니 제가 푸는 방식이 맞는지 헷갈렸습니다.. : ) 그래서 행렬의 곱셈의 공식부터 정리하겠습니다. 행렬의 곱셈 문제풀이 원소 하나씩 인덱스로 접근하여 계산합니다. solution - 성공 def solution(arr1,arr2): # [[0, 0], [0, 0], [0, 0]] result ..
썸네일 [PYTHON/파이썬] 2738 행렬 덧셈 https://www.acmicpc.net/problem/2738 2738번: 행렬 덧셈 첫째 줄에 행렬의 크기 N 과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어서 N개의 줄에 행렬 B의 원소 M개가 차례대로 주어진다. N과 M은 100보다 작거나 같 www.acmicpc.net solution - 성공 import sys N,M = map(int, sys.stdin.readline().strip().split()) one_matrix = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(N)] # [[1, 1, 1], [2, 2, 2], [0, 1, 0]] two_matrix = [l..
썸네일 [PYTHON/파이썬] 10250 ACM호텔 - zfill() 0으로 자릿수 채우는 법 https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 문제 풀이 h를 이용해 푼다. 층은 n를 h으로 나눈 나머지이다. 만약 나누어 떨어진다면 그대로 h를 반환한다. 호수는 n을 h로 나눈 몫에 1를 더한 값이다. 만약 나누어 떨어진다면 그대로 몫을 반환한다. solution - 실패/출력형식 import sys T = int(sys.stdin.readline().strip()) for _ in range(T): h,w,n = map(i..
썸네일 [PYTHON/파이썬] 4949 균형잡힌 세상 - ()[]{}<> https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다 www.acmicpc.net 문제 풀이 괄호의 종류를 딕셔너리로 저장한다. {열린괄호:닫힌괄호} 문자열의 문자를 하나씩 순회한다. 만약 문자가 공백,알파벳,'.'이면 순회를 건너뛴다. 스택을 이용해서 푼다. solution - 성공 import sys while True: s = sys.stdin.readline().rstrip() # 입력값이 '.'이면 입력을 종료한다. if s == '.': brea..