본문 바로가기

알고리즘 부셔버렷/ProblemSolving45

[프로그래머스] 1차 비밀지도 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 1차 비밀지도 문제입니다. 문제가 간결해 프로그래머스에서 인용해왔습니다. 해결 과정 정답으로 반환할 배열 전체를 공백으로 두자. 이는 배열 속 모든 값이 0임을 의미하기도 합니다. 지도1, 지도2 둘 중 하나라도 벽(1)이면 벽(1)이고 지도1, 지도2 두 개 다 공백(0)이면 공백(0). 이는 비트 연산자 |(논리합)과 같습니다. 두 지도의 한층마다 비트연산을 통해 값을 저장합니다. 전체공백 상태의 반환 배열을 채우기 위해 비트연산 값이 저장된 배열을 순회합니다. 한 층 한 층 반환 배열을 채우기 위해 v_idx가 사용되었고 한 층의 맨 끝에서부터 문자를 바꾸는데, 비트연산 값을 2로 나누어 1이면 #으로 0이 나오면 다음 칸으로 이동.. 2022. 5. 29.
[프로그래머스] 실패율 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 실패율 문제입니다. 오천성이란 게임이 존재하고 이 게임에는 N개의 스테이지가 존재합니다. 이 문제는 각 스테이지의 실패율을 기준으로 비교해 스테이지들을 정렬하여 반환하는 문제입니다. 스테이지의 갯수 N 말고도 플레이어들이 각자 현재 멈춰있는 스테이지 번호가 담긴 배열 stages가 주어집니다. stages에는 1이상 N+1 이하의 숫자가 들어갑니다. (스테이지의 최고단계가 N이니 N+1은 모든 스테이지를 클리어한 유저입니다.). 실패율은 (현재 스테이지를 통과하지 못한 인원 / 현재 스테이지를 시도해 본 인원)으로 구합니다. 이제 주어진 정보로 내림차순 정렬된 결과를 반환하면 됩니다. 해결 과정 N+1 크기의 해쉬테이블을 만들고 stag.. 2022. 5. 29.
[프로그래머스] 내적 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 내적 문제입니다. 두 배열이 주어지고 두 배열의 같은 인덱스끼리 곱하여 배열의 모든 수를 합한 것이 내적인데 이를 반환하면 됩니다. 해결 과정 문제설명 정리 코드 전문 #include #include using namespace std; int solution(vector a, vector b) { return inner_product(a.begin(),a.end(),b.begin(),0); } 느낀 점 (잡설 99% , 배운점 1%(많은 편)) 더보기 사실 너무 간단한 문제라 그냥 넘어가려했는데 numeric 라이브러리의 inner_product함수를 기억해두고싶어서 적게되었다. inner_product(first_iter_from, .. 2022. 5. 28.
[프로그래머스] 음양 더하기 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 음양 더하기 문제입니다. 절대값 배열이 주어지고 그 절대값들의 부호가 +면 true -면 false로 담긴 배열이 주어집니다. 그리고 본래 이 값들의 합을 반환하면 됩니다. 해결 과정 두 배열의 순서가 같기 때문에 한 번의 순회에 같은 인덱스를 공유하여 풀 수 있습니다. 코드 전문 #include #include using namespace std; int solution(vector absolutes, vector signs) { int answer = 0; int i = 0; for (auto num : absolutes) { if (signs[i] == true) {answer+=num;} else if (signs[i] == fa.. 2022. 5. 28.
[프로그래머스] 없는 숫자 더하기 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 없는 숫자 더하기 문제입니다. 0~9까지의 숫자가 몇 개 주어지고 그 숫자 중 0~9 중 없는 숫자를 찾아 더한 값을 반환하는 문제입니다. 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/76501 해결 과정 0~9를 더한 값 45에 임의의 숫자 배열의 합을 뺀 것이 정답이다. 코드 전문 #include #include using namespace std; int solution(vector numbers) { return 45-accumulate(numbers.begin(),numbers.end(),0); } 느낀 점 (잡설 99% , 배운점 1%(많은 편)) 더보기 휴 간만에 .. 2022. 5. 28.
[프로그래머스] 크레인 인형뽑기 게임 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 크레인 인형뽑기 게임 문제입니다. n x n 크기의 정사각 격자에 인형이 들어가고 인형은 아래서 부터 위로 쌓입니다. 인형은 위에서부터 뽑을 수 있고 뽑히는 칸의 순서는 배열로 주어집니다. 그리고 바구니가 하나 있고 크레인으로 뽑은 인형들을 이 바구니에 담습니다. 바구니의 특성 상 한 층에 하나의 인형 밖에 못 두어 인형이 하나씩 쌓이게 됩니다. 이 때 같은 인형이 두 개만나면 이 두 인형을 없애며 없앤 인형의 갯수를 최종적으로 반환하여야 합니다. 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/64061 해결 과정 격자배열 전체를 순회하여 가장 상단에 존재하는 값만을 tops라는.. 2022. 5. 28.
[프로그래머스] 키패드 누르기 (설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 키패드 누르기 문제로 모바일처럼 키패드가 있을 때 1 2 3 4 5 6 7 8 9 * 0 # 1,4,7의 왼쪽은 왼쪽 손가락으로만, 3,6,9는 오른 손가락으로만 누른다고합니다. 가운데의 숫자들은 왼쪽, 오른쪽 손가락 중 더 가까운 손가락으로 누른다고 합니다. 거리가 같은 때는 매개변수인 오른손잡이인지 왼손잡이 정보를 가지고 각 각 오른손, 왼손으로 누릅니다. 그리고 이 손가락으로 누를 때 마다 문자열에 L, R을 적어 반환합니다. 해결 과정 전 일단 이 키패드의 넘버 하나하나에 좌표를 주고 주어진 숫자배열을 따라 왼손가락, 오른손가락의 위치를 옮겼습니다. 가운데 번호에 접근을 위해 왼손가락 오른손가락을 비교할 때는 절댓값을 이용한 좌표.. 2022. 5. 27.
[프로그래머스] 숫자 문자열과 영단어 (문제 설명, 해결 과정, 코드 전문, c++) 문제 설명 해결 과정 코드 전문 문제 설명 본 문제는 프로그래머스의 숫자 문자열과 영단어 문제로 "1seven2eight" 과 같이 문자열에 숫자와 숫자의 영문이 들어있고 숫자의 영문을 숫자로 치환하여 정수형으로 반환하면 됩니다. 해결 과정 숫자의 명문과 그 숫자문자를 key와 value로 가지는 hashtable을 만듭니다. (unordered_map 사용하였습니다.) 본격적으로 문자열의 문자를 하나씩 가져와 알파벳인 경우에는 alpha_str이라는 string 객체에 붙여나가고 숫자인 경우에는 ans_str이라는 정답을 담는 string 객체에 담습니다. 이렇게 반복되어진 alpha_str의 값이 hashtable의 key로 존재할 때 string 객체를 반환string에 저장하고 alpha_str을.. 2022. 5. 27.