본문 바로가기

알고리즘 문제풀이

(32)
[프로그래머스 12909] Level2 올바른 괄호 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 문자열을 확인하는 중에 닫는 괄호를 가리키게 되었을 때 이전에 여는 괄호가 있어야만 올바른 괄호라고 할 수 있다. 문자열 확인이 끝났을 때 닫는 괄호와 짝을 이루지 못한 여는 괄호가 남아 있다면 올바른 괄호라고 할 수 없다. 문제풀이 Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 2..
[프로그래머스 12941] Level2 최솟값 만들기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 가장 작은 값과 가장 큰 값을 곱한 결과들을 더해나가야 최소합을 구할 수 있다. 효율성을 고려하기 위한 고민이 필요하다. (아래에 설명되어 있음) 정확성은 통과 했으나 효율성에서 시간초과 발생 아래 코드가 효율성에서 시간초과가 난 이유 가장 작은 값과 가장 큰 값을 곱해 나가기 위해 A배열은 오름차순, B배열은 내림차순으로 정렬해 나가려고 했다. Colle..
[프로그래머스 70129] Level2 이진 변환 반복하기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 2진수 변환하기 0을 제거하면서 카운팅 하기 변환할 숫자가 1이 될때까지 위 작업 반복하기 Java 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 5..
[프로그래머스 1844] Lv.2 게임 맵 최단거리 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key point 현재 위치로부터 상하좌우로 이동하게 되었을 때, 이동한 칸까지 가는 거리가 최소가 되도록 해야한다. 최단 거리를 찾아야 하므로 BFS를 이용해야 한다. Java 문제풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 3..
[프로그래머스 43162] Lv.3 네트워크 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 1 1 0 1 1 0 0 0 1 { 0, 0 } 에서 시작한다. 따라서 0번째 컴퓨터는 이미 하나의 네트워크와 연결되어 있다라고 확인 할 수 있다. 0행의 열 전체를 검사하면서 연결된 컴퓨터가 있는지 확인한다. 0행 1열의 컴퓨터가 즉, 1번째 컴퓨터가 0번 컴퓨터와 연결되어 있다. 1행의 열 전체를 검사하면서 아직 연결이 확인되지 않은 컴퓨터들만 검사한다..
[프로그래머스 43165] Lv.2 타겟 넘버 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 입력된 각 숫자마다 + 또는 - 두번씩 계산되어야 한다. 0번째 인덱스의 값을 + 로 계산 한 뒤에 다시 0번째 인덱스의 값을 - 로 계산하는 것이 아니라 1번째 인덱스의 값으로 이동 후 + 계산을 한다. e.g.) + + + + + → + + + + - → + + + - + → + + + - - → + + - + + → .. 예시를 보면 DFS를 이용해야..
[프로그래머스 1829] 카카오프렌즈 컬러링북 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/1829# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 같은 색깔로 이어져있는 영역의 크기와 그 영역들의 갯수를 구해야한다. 따라서, BFS를 이용해야 한다는 것을 알 수 있다. picture의 원소 중 값이 0인 경우는 색칠하지 않은 영역으로 영역으로 카운팅 하지 않는다. Java 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ..
[프로그래머스 42888] 오픈채팅방 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 오픈채팅방 이용 명령어가 "Change"인 경우, 로그에 해당 활동은 출력되지 않는다. 결과 로그를 return할 때, 배열의 크기에서 해당 명령어 갯수만큼 차감 되어야한다. 오픈채팅방 이용 명령어가 "Leave"인 경우, 입력된 record에 이용자의 닉네임 정보가 있지 않다. 입력으로 들어온 split()을 이용해 record를 파싱한 결과가 다른 명령..
[프로그래머스 60057] Lv.2 문자열 압축 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 Key Point 앞에서부터 일정한 간격으로 문자열을 잘랐을 경우, 최대한 많은 문자를 합치는 방법을 찾아야한다. 문자열을 자르는 범위는 문자열 길이의 절반 크기만큼만 확인하면 된다. e.g.) aabbccdd 문자열을 자른다 했을때 길이 4를 넘는 5, 6, 7, 8...의 길이로 자르는 것은 불가능하다. 잘린 문자열이 x이면서 같은 갯수가 199개라면 199x이므로 압축..
[프로그래머스 118667] 두 큐 합 같게 만들기 문제 Link https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 Key Point 두 큐의 합이 2로 나누어 떨어지지 않으면(짝수가 아니면) 두 큐의 같은 합을 만들 수 없다. 각 큐의 총합을 비교하여 합이 큰 쪽의 head값을 pop해서 작은 쪽의 tail로 push 해준다. Java 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31..