2023.07.28 (금) [프로그래머스] - 최솟값 만들기 (Lv.2) - 올바른 괄호 (Lv.2) - 이진 변환 반복하기 (Lv.2) - 피보나치 수 (Lv.2) - 짝지어 제거하기 (Lv.2) 2023.07.29 (토) [프로그래머스] - 영어 끝말잇기 (Lv.2) - 구명보트 (Lv.2) - 예상 대진표 (Lv.2) - 점프와 순간이동 (Lv.2) - N개의 최소공배수 (Lv.2) 2023.07.30 (일) - 멀리 뛰기 (Lv.2) - 귤 고르기 (Lv.2) - 괄호 회전하기 (Lv.2) - 연속 부분 수열 합의 개수 (Lv.2) - H - Index (Lv.2) 2023.07.31 (월) [프로그래머스] - n^2 배열 자르기 (Lv.2) - 행렬의 곱셈 (Lv.2) - [1차] 캐시 (Lv...
전체 글

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 개요 문제를 읽자마자 dp로 풀어야겠다는 생각이 바로 들었다. 뭔가 이전에 풀어본 계단 오르기 유형의 문제와 비슷하게 접근하면 될 것 같다는 생각으로 접근했다. 틀린 코드 (첫 제출) #include #include using namespace std; int solution(int n) { vector dp(n + 1); // i번째 칸까지 가는데 사용한 최소 건전지 사용량 dp[1] = ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 개요 이전에 풀어본 듯한 유형인 것 같기도 했고, 굉장히 쉬울 거라고 느꼈다. 머릿속으로 대략적인 풀이 방법이 떠오르긴 했으나, 가장 최적의 방법을 생각해내느라 시간이 좀 걸렸다. 제출 코드 #include using namespace std; int solution(int n, int a, int b) { int cnt = 1; int num = 2; while(num != n){ if (..
문제 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 코드 1 (직접 구현) import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw ..
개요 문제가 정말 간단해서 금방 구현할 수 있었다. 직관적으로, 일단 n을 계속 2로 나눠가면서 n의 이진수 형태를 구해가는 과정에서 1의 개수를 구해놓는다. 그리고, n + 1부터 동일하게 2로 나눠가면서 1의 개수를 구하고, n의 이진수의 1의 개수와 동일한 값이 나올 때까지 반복문을 돌리는 방식을 생각했다. 정답 코드 #include #include using namespace std; int solution(int n) { int answer = 0; int curcnt = 0, tempn = n; while (tempn != 0) { int r = tempn % 2; tempn = tempn / 2; if (r == 1) curcnt++; } int nextn = n + 1; while (1) ..
개요 문자열을 split하는 방법에는 수많은 방법이 존재하겠지만, 내가 사용할 방법에 대해 정리해놓기 위한 글이다. 나는 istringstream를 적절히 사용할 예정이다. 두 함수는 #include 헤더를 포함시켜야 한다. isstringstream : 문자열을 parsing하기 위함 isstringstream 1. 가장 기본적인 사용 방법 Defalut로, istringstream은 공백(' ')을 기준으로 split(쪼갬) getline의 인자에 ','를 넣어주면 콤마(,)를 기준으로 split도 가능함 -> 즉, 공백 이외에도 다양한 구분자를 사용할 수 있음 #include #include #include using namespace std; int main(void) { ios_base::syn..
개요 문제를 처음 읽었을 때, 문제를 이해하는 것은 어렵지 않았다. 굉장히 간단한 문제였다. 그러나, 문제를 이해한 후에, 어떤 방식으로 접근해야 하는지가 어려웠다. sequence의 길이
개요 솔직히 처음 문제를 보았을 때, 굉장히 쉽다고 느껴져서 코드를 순식간에 작성했다. 그런 다음에 코드를 제출했는데, 시간 초과로 인해 test case 4개를 실패하였다. 주의해야 할 점 players 시간 초과 O(NM) -> 시간 초과 따라서, O(N) 또는 O(M), 아니면 O(NlogN) 등의 풀이를 생각해야만 한다. 틀린 코드 #include #include #include using namespace std; vector solution(vector players, vector callings) { vector answer; int num = callings.size(); for (int i = 0; i < num; i++){ int idx = find(players.begin(), pla..