알고리즘 78

[프로그래머스] 짝지어 제거하기 C++

https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 이번 문제는 stack 문제였습니다. 📝 문제풀이 1. 스택이 비어있다면 문자 push 2. 스택이 비어 있지 않다면 (짝지어가 있는지 검사) ☻ 스택의 탑과 현재 문자가 같다면 pop ☻ 스택의 탑과 현재 문자가 같지 않다면 현재 문자 push 3. 스택이 비어 있다면 짝지어를 성공적으로 제거한 것이므로 answer = 1 👩🏻‍💻 C++ 코드 #..

[프로그래머스] 문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057?language=cpp 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 이번 문제는 완전 탐색 문제였습니다. 《문제 풀이》 1. 문자열 s를 압축할 수 있는 최대 길이는 s 길이의 절반임 ★ 2. string의 substr() 함수를 이용하여 문자열 비교 3. 비교하는 문자열과 현재 문자열이 ☛ 같다면 cnt++ ☛ 같지 않다면 temp 문자열에 cnt와 비교하는 문자열을 더해줌 (cnt는 cnt > ..

[프로그래머스] 기능개발

https://programmers.co.kr/learn/courses/30/lessons/42586?language=cpp 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 이번 문제는 스택/큐 문제였습니다. 《문제 풀이》 1. progresses 배열의 각 기능이 배포되기 위한 작업 기간을 구함 2. 구한 작업 기간들을 큐에 담음 3. 다음 작업 기간이 앞 차례의 작업 기간보다 ✏︎ 짧거나 같다면 theNumber++ ✏︎ 길다면 answer 배열에 theNumber를 담아줌 《C++ 코드》 #inc..

[프로그래머스] 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 이번 문제는 정렬 문제였습니다. 《문제 풀이》 1. numbers 배열의 숫자를 문자열로 변환 2. 문자열로 변환한 두 숫자를 합치면서 오름차순 정렬 ← (b+a) - (a+b) 3. 결과값을 문자열로 변환 ★ numbers 배열이 0으로만 이루어진 경우 '000'과 같은 결과가 나올 수 있기 때문..

[프로그래머스] 타겟 넘버 JavaScript (Lv.2)

https://programmers.co.kr/learn/courses/30/lessons/43165?language=javascript 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 이번 문제는 DFS 문제였습니다. 📝 문제 풀이 1. numbers 배열의 모든 음이 아닌 정수는 더하거나 뺄 수 있음 ← 재귀 함수 2번 나눠서 호출 2. numbers 배열의 정수들의 순서를 바꾸면 안 됨 (인덱스는 1씩 증가) 3. 인덱스가 numbers 배열의 길이와 같다면 ••• (1) sum ..

백준 17413번 단어 뒤집기 2

문제 보러가기 : https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 이번 문제는 문자열 문제였습니다. 태그 안팎의 단어를 꺼낼 때 각각 큐(queue)와 스택(stack) 자료구조를 사용하였습니다. 😀 《문제 풀이》 1. 공백을 포함하여 출력하기 위해 getline() 함수로 문자열 입력 2. 태그 안의 단어는 큐에 넣고, '>' 를 만나면 큐에 있는 모든 문자를 결과 문자열에 합함 3. 태그 밖의 단어는 스택에 ..

알고리즘/BOJ 2021.04.18

[프로그래머스] 등굣길

문제 보러가기 : https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 이번 문제는 동적 프로그래밍 문제였습니다. 《문제 풀이》 1. 길의 정보를 나타내는 배열 road[101][101] 선언 2. 물이 잠긴 지역은 -1로 두어 경로의 개수를 세지 못하도록 방지 3. 누적 합을 위해 집의 위쪽 좌표 또는 왼쪽 좌표를 1로 두기 (본인은 왼쪽 좌표를 1로 두었음) 4. 해당 좌표가 -1 인 경우에는 0으로..

백준 2583번 영역 구하기

문제 보러가기 : https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 이번 문제는 그래프 탐색 문제였습니다. (본인은 DFS 알고리즘으로 풀었습니다.) 💡 My Case 💡 모눈종이 위에 눈금에 맞추어 K개의 직사각형을 그릴 때, 모눈종이를 뒤집어도 영역의 넓이는 그대로이므로 왼쪽 아래 꼭짓점의 좌표와 오른쪽 위 꼭짓점의 좌표로 값을 채워넣어도 되지만, 본인은 문제에 그려진 위치에 직사각형을 그렸습니다. 《문제 풀이》 1. 모눈..

알고리즘/BOJ 2021.04.14

백준 2293번 동전 1

문제 보러가기 : https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net 이번 문제는 다이나믹 프로그래밍 문제였습니다. 《문제 풀이》 1. n가지 동전의 가치를 coinValue 배열로 입력받음 2. 가치의 합이 k원이 되는 경우의 수를 구하기 위한 dp 배열을 모두 0으로 초기화 3. dp[0]은 자신의 가치만으로 j원이 되는 경우의 수이므로 1로 세팅 4. 가치의 합이 j원이 되는 경우의 수와 자신의 가치를 뺀 가치의 경우의 수를 합함 ⭐️ 5. n..

알고리즘/BOJ 2021.03.18

백준 1120번 문자열

문제 보러가기 : https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 이번 문제는 문자열 문제였습니다. A와 B의 길이를 같게 할 때 A와 B 길이의 차이만큼 A의 앞 또는 뒤에 B와 같은 문자를 추가해주면 되므로 이 부분은 구현할 필요없이 입력받은 A와 B의 차이를 구하면 됩니다. 😺 《문제 풀이》 1. B의 인덱스를 증가시켜 가면서 A의 길이만큼 A와 B의 차이를 계산 2. A와 B 문자열의 문자가 다르면..

알고리즘/BOJ 2021.03.07
반응형