프로그래머스 - 가장 큰 수처음 문제를 보자마자 든 생각은 Combination을 이용해서 모든 조합을 확인하는 것이었다.실제로 그렇게 구현을 했고, 다음과 같은 Combination을 사용했다.문제는 이렇게 하니 테스트 케이스는 맞을지라도 채점을 하니 거의 모든 경우
프로그래머스 - 금과 은 운반하기문제를 받자마자 어떻게풀지? 라는 생각부터 들어서 공부부터 했다;공부하다보니 해당 문제가 Binary Search 문제라는 것을 깨달았고, 대충 감이 와서 그 뒤로는 금방 풀었다.참고 자료 : 이분탐색 - Parmetric Searche
프로그래머스 - 괄호 회전하기스택을 활용하면 금방 풀 수 있다.0 ~ s.size()까지 shift를 하면서 { ( 를 만나면 스택에 푸쉬하고, } )를 만나면 조건에 맞춰서 스택의 탑을 빼준다.만약 탑에서 빼주려할 때 스택이 비어있거나, 알맞는 짝이 아니라면 해당
프로그래머스 - 두 개 뽑아서 더하기주어진 배열에서 두 수를 뽑아서 더했을 때 나오는 숫자의 결과들을 벡터에 담아서 리턴해주면 된다.일단 생각나는데로 먼저 작성한 코드는 다음과 같다.배열이 총 3개읭 원소로 이루어졌다고 가정하면 다음과 같은 numbers 조합을 가지도
프로그래머스 - 큰 수 만들기(https://programmers.co.kr/learn/courses/30/lessons/42883문제를 보고 어떻게 풀지 감이 잘 안와서 일단 조합을 만드는 것으로 시도했다.문제는 제한 조건에서 number가 1,000,000
프로그래머스 - 2개 이하로 다른 비트(https://programmers.co.kr/learn/courses/30/lessons/77885일단 시간초과가 날 것을 예상하고, 비트를 하나하나 계산하는 방식으로 풀었다.당연히 시간초과가 났다.코드는 굉장히 간단한
그림위와 같은 규칙을 가지는 삼각 달팽이를 만들어서 0행부터 순서대로 결과를 담아서 반환해주면 된다.000000000000000...의 형태로 삼각 달팽이가 생겼다고 일반화하고, 규칙은 다음과 같다. 1\. i % 3 == 0 row = row + 1, col = co
프로그래머스 - 2016년Level 1로 쉬운 문제이다.7월을 기준으로 홀수 달과 짝수 달의 날짜가 달라지는 것만 주의하면 된다.결과
프로그래머스 - 공 이동 시뮬레이션(https://programmers.co.kr/learn/courses/30/lessons/87391일단 문제를 보고, 테스트케이스를 통과하자는 생각으로 O(nmq) 복잡도를 가지는 알고리즘으로 작성했다.for-loop 돌면
프로그래머스 - 10주차\_교점에 별 만들기아 처음에 가볍게 풀어본다는 생각으로 시작해서 엣지케이스 때문에 개삽질했다;일단 얻은 첫 번째 교훈은 문제를 꼼꼼히 읽어봐야한다는 것인데,그림도 크고 글자도 많아서 대충 읽었다가.참고사항다음과 같이 참고사항이 있는 것을 못보고
프로그래머스 - 나머지가 1이 되는 수 찾기교점에 별 만들기 문제에서 너무 진을 빼서 쉬운 문제 바로 찾아 풀었다...
프로그래머스 - 쿼드압축 후 개수 세기아 이거 자꾸 시간초과나서 뭔가 잘못했나하고 봤는데, 지금까지 습관적으로 읽기전용 벡터를 const만 붙여서 함수인자로 넣어주고 있었다;; cpp에서 &를 붙이지 않으면 함수인자로 전달할 때 메모리 카피를 하는데, 이거 때문에 테스
프로그래머스 - 피로도던전을 탐험할 수 있는 경우의 수를 순열로 뽑는다.던전의 갯수가 1이상 8이하여서 순열로 해도 괜찮을 거라고 판단함.순열을 구한 뒤 문제에 주어진 조건에 따라서 탐험 가능 여부를 체크하고 탐험 던전 갯수를 체크해서 가장 큰 값을 반환해주면 된다.
프로그래머스 - 전력망을 둘로 나누기(https://programmers.co.kr/learn/courses/30/lessons/86971n : 9 wires : \[1,3,2,3,3,4,4,5,4,6,4,7,7,8,7,9] result : 3그림위와 같이 그
프로그래머스 - 부족한 금액 계산하기주어진 조건 그대로 구현하면 되서 쉽다. 레벨 1이기도 하고.한 가지 주의할 점은 반환형이 long long이라는 것인데, 그 이유로는 price, count가 각각 1<= price, count <= 2500으로 주어지기
프로그래머스 - 아이템 줍기(https://programmers.co.kr/learn/courses/30/lessons/87694그림 1위와 같이 사각형들이 여러개 주어지고, 그 들의 edge만 타고 갔을 때, 빨강점과 파랑점을 잇는 최단거리를 찾는 문제이다.
프로그래머스 - 최소직사각형처음에는 주어진 점들에 대해서 (a, b), (b, a)에 index를 기록해놓고, 모든 index를 다 포함하는 최소 직사각형을 찾으려했다.이렇게 구현하다보니 굳이 직접 맵에 기록하고, 일일이 직사각형을 쳐서 구하지 않아도 아래와 같이 코드
프로그래머스 - 퍼즐 조각 채우기(https://programmers.co.kr/learn/courses/30/lessons/84021레벨 3이라 생각없이 덤볐다가 피봤다. 내가 겪은 문제 중 구현이 젤 빡센듯하다;어렵거나 알고리즘을 요구하지않고, 순수 구현만
프로그래머스 - 모음사전A E I O U를 기반으로 한 문자열들은 A, AA, AAA, AAAA, AAAAA, AAAE 순서로 증가한다.이 때, 주어진 문자열이 해당 문자열들 중 몇번 째에 위치하는지 알아내면 되는 문제이다.문제를 해결하기 위해서 A : 1, E : 2
프로그래머스 - 이진 변환 반복하기주어진 문자열에서 0의 갯수를 센다.문자열 길이에서 0의 갯수를 빼면 0을 제외한 문자열의 길이가 된다.이를 2진법으로 변환한다.3의 결과가 "1"이 아니라면 1단계부터 다시 반복한다.다른 분들도 위 방법과 비슷하게 푼듯.결과
프로그래머스 - 최솟값 만들기처음에 순열을 만들어서 풀었다가 실제로 제출하니까 시간초과가 나서 틀렸다.주어진 두 문자열의 길이가 1000 이하라서 괜찮을 줄 알았는데, 실패해서 다른 방법을 생각했다.생각을 해보니 A 문자열은 오름차순으로 정렬하고, B 문자열은 내림차순
프로그래머스 - n^2 배열 자르기n의 값이 10의 7승까지이기 때문에 map을 만들고, index로 풀면 시간초과가 발생한다.따라서 주어진 left와 right를 for-loop으로 돌면서 바로 수식으로 풀어야 한다.row, col는 몫과 나머지를 통해서 구할 수 있
보통 이런식으로 코드를 작성했는데,나누기 2같은 경우는 곱하기 0.5로 바꿔서 cpu 사이클을 좀 줄이는 습관을 들이고, 모듈러 연산 또한 비트 연산으로 최적화를 하는 습관을 들여야할 것 같다. 그리고 push_back좀 그만쓰고 substr로 slicing하는 습관
프로그래머스 - 피보나치 수그냥 풀었다가 시간초과 맞았다.위와 같이 피보나치 함수를 만들어서 재귀로 풀면 7번부터 시간초과 난다.시간초과따라서 위와 같이 미리 map을 다 만들어 놓고 바로 답을 리턴해줘야 한다.결과1234567을 미리 모듈러 연산을 해주도록 했다.(a
제한 조건스킬은 알파벳 대문자로 표기하며, 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.스킬 순서와 스킬트리는 문자열로 표기합니다.예를 들어, C → B → D 라면 "CBD"로 표기합니다선행 스킬 순서 skill의 길이는 1 이상 26 이하이며, 스킬은 중복해
사진1사진2위와 같이 문자열이 주어지고, 그 방향대로 맵을 이동할 때, 실제로 이동한 거리가 얼마인지 구하는 문제이다. 단 맵 밖으로 나가도록 유도하는 문자는 그냥 넘긴다. 위와 같은 경우는 7번과 8번이 맵 밖으로 나가도록 하는 문자이기 때문에 생략하고 9번을 수행한
흔한 괄호 문제이다. ()() 이런 문자열은 올바른 괄호이고, (())) 이런 문자열은 잘못된 괄호이다.문자열을 0부터 돌면서 ')'를 만나면 스택의 top을 확인하고 '('이라면 pop, 아니라면 push해주면 된다. (empty면 false를 리턴해주면 된다.)'(
문제를 보고 점화식을 세우다가 dp이고, dp0x?? + dp1x?? + ... 인 것 까진 발견했는데, 그 이상 진전이 없어서 구글링을 좀 했다...알고보니 카탈란수라는 점화식으로 구할 수 있는 문제였다.카탈란수예를 들어, C0 = 1C1 = C0 x C0C2 = C
프로그래머스 - 쿠키 구입문제를 읽고 Prefix_Sum으로 푸는 문제인 것 같아서, 해당 방식으로 풀었다.그림1l~m 까지의 구간은 0~m 구간 합에서 0~l 구간 합을 빼면 된다. (a)m~r까지의 구간은 0~r 구간 합에서 0~m 구간 합을 빼면 된다. (b)이
프로그래머스 - 가장 긴 팰린드롬(https://programmers.co.kr/learn/courses/30/lessons/12904팰린드롬 문자열이란 문자열을 뒤집은 결과가 기존 문자열과 같은 문자열이다.즉 예를 들어, "abcdedcba" 는 길이가 9가
1점짜리 문제이다.swap할 때 xor 연산을 이용할 수 있다는 것만 익혀두면 될 것 같다.multiply 할 때도 비트연산으로 하는 코드가 있던데 그 정도까진 봐도 나중에 못쓸것 같다.
배열 합을 구할 때, numeric의 accumulate를 쓰면 편하다.
1레벨 문제라 쉬운데, long long으로 형변환해서 Overflow만 신경써주면 된다.
1레벨...
프로그래머스 - 약수의 합페르마님이 n까지의 약수를 구할 때, n/2까지만 검사해보면 된다 했다.
프로그래머스 - 문자열 내림차순으로 배치하기compare 함수를 써서 앞부터 내림차순 정렬을 해도 되고,rbegin(), rend()를 해서 뒤에서부터 오름차순 정렬을 해도 된다.
프로그래머스 - 짝수와 홀수1레벨짜리 문제다.
프로그래머스 - 문자열 다루기 기본isdigit만 익혀두면 될 것 같다.
프로그래머스 - 정수 제곱근 판별(https://programmers.co.kr/learn/courses/30/lessons/12934cmath 라이브러리의 pow, powl, sqrt를 자주 이용해야겠다. (매번 직접 구현했는데;)제곱근의 제곱이 원래 수랑
프로그래머스 - 자릿수 더하기모듈러하면서 더하는 방법으로 풀었는데, 다른 사람 코드를 보니 문자열로 변환해서 푼 사람이 있었다.참신한 방법인듯.
프로그래머스 - 문자열을 정수로 바꾸기문자열을 정수로 바꿀 때 stoi를 쓰면, 부호까지 적용해준다 ㅎㅎ
프로그래머스 - 이상한 문자 만들기제한 사항문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.위 제한사항만 잘 주의해서 풀면 된다. 문자열 전체를 도
프로그래머스 - 자연수 뒤집어 배열로 만들기문자열로 변환하고, 뒤에서부터 push_back하면 된다.
프로그래머스 - 수박수박수박수박수박수?"수박" 문자열을 계속 더해준다.홀수면 끝에 "수"를 붙여준다.
프로그래머스 - 미로 탈출레벨 4짜리 그래프 문제라 꽤 고생했다... 주말에 그래프 좀 공부하고, 이것저것 시도하면서 박치기했다가 실패하고 해설을 보고 풀었다;예제1일단 간략하게 해설하자면 위와 같이 노드가 주어진다.Start 1부터 End 3까지 갈 때 최단거리를 찾
프로그래머스 - 문자열 압축(https://programmers.co.kr/learn/courses/30/lessons/60057문자열을 자르는 단위는 1부터 시작해서 최대 문자열의 길이 / 2 까지이다.먼저, 문자열을 substr을 사용해 자른 뒤 문자열 벡
프로그래머스 - 신규 아이디 추천(https://programmers.co.kr/learn/courses/30/lessons/72410레벨 1짜리 문제로 비교적 쉽다.빠른 시간내에 구현해내는게 중요할듯하다.isdigit, islower, tolower 정도만
프로그래머스 - 키패드 누르기키패드를 누를 때, 어느 손가락을 누를지 결과값을 리턴하면 되는 문제이다.1,4,7은 왼손을 3,6,9는 오른손을 그 외 숫자는 가까운 손으로 누르면 된다.처음 왼손, 오른손은 , 쉽게 풀기 위해서 , 그리고 모든 숫자에 대해서 -1을 한
프로그래머스 - 오픈채팅방map정도만 사용하면 쉽게 풀 수 있는 문제인 것 같다.먼저 stringstream을 이용해서 띄어쓰기 기준으로 나눠서 'Enter', 'uid1234', 'Muzi' 의 형태로 record를 처리해준다.Change가 들어오는 경우 이전에 들어
프로그래머스 - 크레인 인형뽑기 게임카카오 문제들은 뭔가 길다.. 그래서 그림을 보고 이해를 먼저 하고, 그 다음 지문을 읽는다.문제는 간단한 스택 문제이다. \[0,0,0,0,0,0,0,1,0,3,0,2,5,0,1,4,2,4,4,2,3,5,1,3,1] 이런 식으로 b
프로그래머스 - 카카오프렌즈 컬러링북(https://programmers.co.kr/learn/courses/30/lessons/1829bfs + queue를 사용할 줄 알면 굉장히 쉬운 문제이다.문제 시작하면 전역변수를 사용할 때 무조건 값을 초기화하고 사용
프로그래머스 - 단체사진 찍기전역 변수로 int answer = 0; 으로 선언해놓아서 초기화했다고 생각했는데, 그게 안되나보다... 그래서 제출을 몇번했는데 계속 실패하길래 설마해서 int solution(... 안에서 answer = 0을 적어주니 바로 통과했다;
프로그래머스 - 124 나라의 숫자(https://programmers.co.kr/learn/courses/30/lessons/12899접근 방법 1. DP1(1) 2(2) 4(3)11(4) 12(5) 14(6)21(7) 22(8) 24(9)41(10) 42(
프로그래머스 - K번째수1점짜리 문제이다.
프로그래머스 - 체육복(https://programmers.co.kr/learn/courses/30/lessons/42862인풋위와 같이 input이 들어왔을 때 n은 학생의 총 숫자. lost는 체육복이 없는 학생, reserve는 체육복 여벌이 있는 학생의
1점짜리 문제다.아래는 중복제거를 위해서 unordered_set으로 구현한 코드이다. (정렬이 필요없기 때문에 set을 쓸 필요가 없음)결과
프로그래머스 - 실패율(https://programmers.co.kr/learn/courses/30/lessons/42889크게 어려운 부분은 없고, 분모가 0이 되는 경우만 잘 생각해서 예외처리 해주면 되는 것 같다.cur_user는 해당 스테이지에 머무르고
프로그래머스 - 메뉴 리뉴얼문제가 잘 이해가 안되서 몇번 읽어본 것 같다.구현 핵심은 크게 다음과 같다.1\. orders에 대해서 course의 combination을 구해야함course : 2, 3, 4라고 가정하면 orders 벡터의 각 문자열에 대해서 2개의 문
프로그래머스 - 괄호 변환문제에서 주어진데로 재귀로 구현하면 된다...1~4까지 너무 구현을 할 수 있도록 깔끔하게 적어놔서 그대로 구현하면 된다.결과
\[프로그래머스 - 1차 뉴스 클러스터링](https://programmers.co.kr/learn/courses/30/lessons/17677풀이 단계는 다음과 같다.주어진 문자열을 2글자씩 자른다. 단, 이 때 알파벳을 제외한 것은 제외한다.for-rang
프로그래머스 - 수식 최대화(https://programmers.co.kr/learn/courses/30/lessons/67257빠르게 푸는 연습을 해야하는데 쉽지않다.풀이 방법은 다음과 같다.인풋 expression을 모두 정수형으로 변환해준다. (num 배
프로그래머스 - 튜플주어진 문자열에서 숫자만 파싱할 수 있다면 쉬운 문제이다.숫자가 등장하는 횟수가 가장 많은 숫자부터 적은 횟수를 결과 값으로 반환해주면 된다.코드는 아래와 같다.
프로그래머스 - 리틀 프렌즈 사천성(https://programmers.co.kr/learn/courses/30/lessons/1836풀이 순서는 다음과 같다.Board에 존재하는 알파벳이 무엇무엇 있는지 체크한다.set을 이용하여 중복제거를 통해 체크하고,
프로그래머스 - 예산레벨 1짜리 문제다.
프로그래머스 - 브라이언의 고민(https://programmers.co.kr/learn/courses/30/lessons/1830개인적으로 문제 신뢰도에 굉장히 의문이 든다....정답자 코드를 보면 테스트 케이스를 모두 커버못해도 정답인 코드가 많다;심지어
프로그래머스 - 조이스틱(https://programmers.co.kr/learn/courses/30/lessons/42860처음에 단순 구현문제인줄 알고 손가는데로 풀고 제출했다가 자꾸 케이스가 몇개 틀려서 다시 생각해보니 DFS 문제였다.핵심은 좌로 움직일
프로그래머스 - 게임 맵 최단거리굉장히 흔한 유형의 bfs문제이다.visitMap 관리하면서 row, col, cost 신경써서 queue가 비거나 도착지에 도착할때까지 bfs를 돌려주면 된다.priority_queue 썼다가 효율성 1번에서 시간초과가 나서 그냥 qu
프로그래머스 - 입국심사이분탐색 문제로 최소로 걸리는 시간을 구해야하기 때문에걸리는 시간을 이분탐색의 주체로 잡는다.left를 1로 right를 충분히 큰 숫자로 (입국 심사를 기다리는 사람의 숫자와 걸리는 시간의 최대 값이 1 << 30 보다 작아서 이 둘
이분탐색인 힌트를 못보고 했으면 조합 다 뽑아서 일일이 계산했을 것 같다...그 마저도 n의범위가 1 <= n <= 50000 이어서 결국 틀렷을 것 같다.해당 문제는 이분탐색 문제인데, 정답으로 원하는 것은 특정 돌을 삭제했을 때 돌과 돌 사이의 거리 값들
프로그래머스 - 예상 대진표(https://programmers.co.kr/learn/courses/30/lessons/12985모든 홀수는 짝수로 바꿔주고, 우측으로 1칸 쉬프트 해주면 된다. (그냥 정수형 나눗셈해도 된다)Stage 1 : 1 2 3 4 -
프로그래머스 - 순위 검색어렵지는 않은 문젠데, 효율성 테스트 때문에 까다롭다.cpp java python : 0 1 2 3backend frontend : 0 1 3junior senior : 0 1 2chicken pizza : 0 1 2위와 같이 Index를 두고
프로그래머스 - 자물쇠와 열쇠위 사진같은 경우엔 Key를 시계방향 90도로 뒤집고, 우측으로 한 칸 밑으로 한 칸 내리면 된다.Key와 Lock의 크기는 최소 3에서 최대 20까지이다.이 문제를 해결하기 위해서 Key를 직접 회전하거나 움직이지 않고, 반대로 Lock에
프로그래머스 - 선입 선출 스케줄링(https://programmers.co.kr/learn/courses/30/lessons/12920이분탐색으로 풀 수 있다.먼저 이분탐색을 통해서 끝나는 시간을 구한다. (finish_time)이분탐색을 도는 동안 현재 시
프로그래머스 - 최적의 행렬 곱셈(https://programmers.co.kr/learn/courses/30/lessons/12942dp로 풀어야 하는 문제다.\[5, 3, 3, 10, 10, 6]의 경우 앞 부터 행렬을 ABC라고 표기하겠다.만약 AB를 먼
프로그래머스 - 후보키(https://programmers.co.kr/learn/courses/30/lessons/42890단순 구현 문제로 map을 쓸줄알고, 문자열 포함 여부만 잘 체크해주면 된다.일단 총 4개의 컬럼이 존재한다고 가정하면,0, 1, 2,
프로그래머스 - 표 편집(https://programmers.co.kr/learn/courses/30/lessons/81303풀이 방식은 세그먼트 트리와 이중 연결리스트로 두 가지이다.Set, Stack을 이용한 풀이도 있는 것 같은데, 아마도 세그먼트 트리나
프로그래머스 - 보석 쇼핑(https://programmers.co.kr/learn/courses/30/lessons/67258map을 사용하는 sliding window 문제이다.left와 right를 두고, 조건에 맞춰서 1씩 증가시키면서 문제에서 요구하는
프로그래머스 - 불량 사용자주어지는 크기가 최대 20개 정도라 user_id에서 banned_id 갯수만큼 조합을 다 구한 뒤 일일히 비교해가면서 해도 충분히 가능한 문제이다.핵심은 banned_id와 user_id에서 banned_id 갯수만큼 뽑은 조합이 매핑이 가
프로그래머스 - 위장(https://programmers.co.kr/learn/courses/30/lessons/42578조합을 구해서 풀어버리면 시간초과가 난다. 핵심은 수식으로 정리하다보면 수식 1줄로 바로 풀 수 있다.먼저 수식을 위해 각 조합별로 몇 가
프로그래머스 - 4단 고음(https://programmers.co.kr/learn/courses/30/lessons/1831카카오는 테스트 케이스가 1개로 퉁쳐져서 나올 때가 있어서 디버깅이 너무 불편한 경우가 많다.이 문제는 일단 기본적으로 dfs + 가지
프로그래머스 - H-Index(https://programmers.co.kr/learn/courses/30/lessons/42747카카오 문제 풀다가 머리아파서 쉴겸 풀었는데, 다 풀고 다른 사람 코드를 보는데 신박한 풀이가 있어서 놀랐다.일단 정렬 카테고리답
프로그래머스 - GPSDP로 풀어야하는 문제로 점화식은 다음과 같다.i번째에 경로가 j가 된다는 것은, i-1번째에 j에 머물고 있거나 혹은 j와 인접한 노드에 있었다는 의미이다.먼저 주어진 edge_list를 이용해서 graph를 만들고, dp0gps_log0]을 0
프로그래머스 - 배달다익스트라를 사용해서 1에서부터 다른 노드까지의 최단 거리를 구한 뒤 그 거리가 K 이하인 곳의 갯수를 세면 된다.
프로그래머스 - 이중우선순위큐min_heap, max_heap을 2개 관리하면서 숫자가 insert될 때마다 각 숫자의 index_count를 증가시켜주고, 이를 관리하기 위해 map을 사용한다. (map의 index_count가 의미하는 것은 현재 heap에 존재하는
프로그래머스 - 등굣길이미지위 그림과 같이 (0, 0)에서 (n, m)까지 갈 수 있는 모든 경우의 수를 구하면 되는 문제이다.중간중간 웅덩이가 있기 때문에 해당 부분을 지나는 경우는 제외해야 한다.움직임은 우측과 하단으로만 할 수 있기 때문에 (i, j)에 도달할 수
프로그래머스 - 구명보트배열을 정렬한다면 그리디하게 풀 수 있는 문제로 배열의 앞부터 찾은 값 i와 뒤부터 찾은 값 j를 합쳐서 limit보다 작은 것이 몇 개 있는지를 체크해주는게 핵심이다.정렬을 통해 i-1번째 값은 항상 i번째 값보다 작고, j+1번째 값은 항상
프로그래머스 - 베스트앨범map과 sort정도만 이용하면 금방 풀 수 있는 문제인 것 같다.추가적으로 key로 genres 값인 string을 사용하는데, 이들의 정렬성은 필요없다.그래서 unordered_map을 사용했는데, 데이터셋이 크지 않아서 map을 쓸때와 큰
프로그래머스 - 합승 택시 요금사진1효율성 생각 안하고 일단 플로이드 와샬을 사용하면 정확성은 맞출 수 있을 것 같아서 시도했는데, 효율성도 바로 통과되었다.s부터 시작해서 임의의 K노드까지의 최단거리와 K부터 a, b까지의 최단거리를 합한 거리 중 최단거리를 반환해주
\[프로그래머스 - 1차 프렌즈4블록](https://programmers.co.kr/learn/courses/30/lessons/17679!\[그림1](https://images.velog.io/images/gkak1121/post/3b57eb04-
프로그래머스 - 영어 끝말잇기해쉬로 이미 쓰여진 단어들 체크만 해주면서 풀면 된다.코드는 다음과 같다.결과
프로그래머스 - \[1차] 다트 게임주어진데로 구현하면 되는 쉬운 문제이다.코드는 아래와 같다.결과
프로그래머스 - 경주로 건설(https://programmers.co.kr/learn/courses/30/lessons/67259bfs를 이용해서 풀 수 있는 문제이다.주의할 점은 방향별로 cost를 따로 관리하지 않으면 TC25를 통과하지 못한다.다음과 같이
프로그래머스 - \[1차] 캐시LRU를 구현하는 문제로 find, erase를 사용하면 금방 구현할 수 있다.코드는 아래와 같다.결과
프로그래머스 - \[1차] 비밀지도비트연산을 쓰면 코드가 깔끔해진다.코드는 아래와 같다.결과
프로그래머스 - 점프와 순간 이동순간이동을 하면 현재까지 간 거리의 두 배에 해당하는 거리에 도착할 수 있고, 에너지를 사용하면 K만큼 이동할 수 있다.N에 도착하기 위해 최소로 사용하는 에너지가 몇인지를 반환하면 된다.순간이동을 최대한 많이 해야하므로 N부터 1까지
\[프로그래머스 - 3차 방금그곡](https://programmers.co.kr/learn/courses/30/lessons/17683구현 문제긴한데, 코너케이스 때문에 좀 애먹었다. 이런 유형의 카카오 문제들은 1\. 문자열 파싱을 잘 할 수 있는지 2\.
프로그래머스 - 가장 큰 정사각형 찾기(https://programmers.co.kr/learn/courses/30/lessons/12905주어진 배열에서 각 행과 열에 대해서 최대 정사각형 크기를 미리 구해놓고, 가지치기를 하면서 (0, 0) ~ (N, M)
프로그래머스 - 같은 숫자는 싫어vector의 unique + erase를 연습해보는 문제이다.unique는 vector내에서 중복되는 원소들은 뒤로 보내고, 중복되는 원소가 시작하는 주소를 반환한다.예를 들어 1,1,2,2,3,4에 unique를 사용하면 1,2,3,
프로그래머스 - \[3차] 압축map정도만 쓰면 되는 간단한 구현 문제이다. 예외케이스도 딱히 없다.코드는 아래와 같다.결과
\[프로그래머스 - 3차 파일명 정렬](https://programmers.co.kr/learn/courses/30/lessons/17686처음에 sort써서 틀렸다가 stable_sort로 바꾸고, stable_sort가 상대적 위치를 변경하지 않는다는 것을
프로그래머스 \[3차] n진수 게임10진수 숫자를 n진수로 변환하는 것인 첫 번째 부분.그 다음 for-loop을 돌면서 t개를 다 채우면 빠르게 break를 걸어주는 것이 두 번째 부분이다.break를 안걸고 t\*m개를 다 구해도 되긴하는데, 그러면 몇몇 TC에서
GCD, LCM은 언제든 쓰일 수 있음.
프로그래머스 - 소수 찾기에라토네세의체를 쓰면 특정 구간 내에서 소수의 개수를 빠르게 구할 수 있다.n까지 모두 구하지 않고 k\*k > n이 되는 k에서 break를 걸거나, 배수를 지우는 로직에서 최적화를 수행할 수 있다.코드는 다음과 같다.결과결과2결과3
프로그래머스 - 다음 큰 숫자\_\_builtin_popcount 혹은 bitset을 사용하면 된다.코드는 다음과 같다.결과
프로그래머스 - 땅따먹기dp로 풀 수 있는 문제이다.dpi가 의미하는 것은 i행 j열에서 얻을 수 있는 최대 점수이다.이는 i-1번째 행에서 얻을 수 있는 최대 점수에 (i,j)의 land 값을 더해주면 된다.같은 열을 연속으로 밟을 수 없기 때문에 이것만 체크해주면
프로그래머스 - 숫자의 표현(https://programmers.co.kr/learn/courses/30/lessons/129241~n까지 합은 n(n+1)/2라는 것을 이용해서 b까지의 합 - a까지의 합 = a+1 + a+2 + ... + b가 되고, 이
프로그래머스 - 최댓값과 최솟값드디어 프로그래머스 레벨 2를 다 풀었다.
프로그래머스 - 최고의 집합(https://programmers.co.kr/learn/courses/30/lessons/12938n개의 원소들의 차이가 최소가 될 때가 n개의 원소를 곱했을 때의 최대값이다.n = 3, s = 10일 때 3, 4, 4가 정답인데
프로그래머스 - 줄 서는 방법(https://programmers.co.kr/learn/courses/30/lessons/12936n과 k가 주어졌을 때, 1, 2, ..., n까지의 순서를 순열로 나타냈을 때 k번째 순열을 반환하는 문제이다.algorithm
프로그래머스 - 야근 지수(https://programmers.co.kr/learn/courses/30/lessons/12927야근 피로도가 최소가 되기 위해선 n을 뺏을 때, 배열 내의 원소들끼리 최대한 같은 값을 가지도록해서 차이가 최소가 되어야 한다.즉,
프로그래머스 - 거스름돈dpi가 의미하는 것은 moneyi를 추가했을 때, j원을 나타내는 경우의 수이다.dpi = dpi-1 + dpij - moneyi]인데, 이는 즉,moneyi를 추가하지 않았을 때 j원을 나타내는 경우의 수와 j - moneyi원을 나타내는 경
프로그래머스 - 스티커 모으기(2)(https://programmers.co.kr/learn/courses/30/lessons/12971DPi가 의미하는 것은 i번째에서의 최대값이다.이는 DPi-1번째 값을 그대로 사용하거나 DPi-2번째 값에 Stickeri
프로그래머스 - 숫자 게임승점이 최대가 되도록 하려면 Ai에 가장 작은 차이로 이기는 Bj를 매핑해줘야한다.A : 5,1,3,7 / B : 2,2,6,8의 경우 A의 5를 B의 6으로, 1을 B의 2로, 3을 B의 8로 매핑해주면 3점이 된다. (7을 8로 매핑해줘도
프로그래머스 - 기지국 설치(https://programmers.co.kr/learn/courses/30/lessons/12979n의 범위가 200,000,000 이하의 자연수이기 때문에 n을 이용해서 풀면 시간초과가 난다. (벡터 할당만해도 시간초과가 난다)
프로그래머스 - 보행자 천국(https://programmers.co.kr/learn/courses/30/lessons/1832대표적인 DP문제이다.오른쪽과 아래쪽으로만 움직일 수 있기 때문에 다음 DP식이 기본 식이다.추가적으로 city_mapi가 2인 경우
프로그래머스 - 광고 삽입윈도우 문제이다.특정 구간의 합이 최대가 되는 구간을 찾으면 되는데, 평범하게 찾는다면 O(NM)만에 찾을 수 있다. (M = 찾으려는 구간의 길이)이를 윈도우 알고리즘으로 개선하면, 0~M까지의 합을 구해놓고, M+1~N까지 진행하면서 0~M
프로그래머스 - 기둥과 보 설치시뮬레이션 문제이다.주어진 조건이 있어서 해당 조건에 적합하지 않은 연산은 무시하고 지나가야한다.따라서 일단 설치하고, 만약 설치된 구조물이 적합하지 않으면 해당 연산은 무시하는 코드만 짜주면 된다. i, j에 설치했으면 그 주위만 확인해
프로그래머스 - 길 찾기 게임바이너리트리 만들고 전위, 후위 순회만 구현하면 된다.코드는 다음과 같다.결과
프로그래머스 - 단속카메라먼저 구간을 오름차순으로 정렬해놓고, 아직 겹쳐지지 않은 구간들에 대해서 앞에서부터 최대한 많이 겹쳐주면서 answer를 1씩 증가시켜주면 된다. 이 때, 겹칠때마다 left와 right가 바뀔 수 있으니 이를 갱신해줘야한다.코드는 다음과 같다
프로그래머스 - 순위(https://programmers.co.kr/learn/courses/30/lessons/49191옛날에 DFS로 괜히 어렵게 풀어서 엄청 오래걸렸길래 다시 풀었다. (거의 10000ms 걸리지만 통과는 함)a, b를 기준으로 a는 승자
프로그래머스 - 징검다리 건너기(https://programmers.co.kr/learn/courses/30/lessons/64062바이너리서치를 이용했다.left : 0 right : stones 중 최대 값으로 초기 설정을 하고, mid 값은 N명의 친구가
대표적인 최소신장트리 문제이다. 밑의 코드는 프림 알고리즘이다.프림알고리즘은 다음과 같은 단계로 이루어진다.1\. 전체 N개의 노드를 잇는 최소신장트리는 T개와 N-T개의 노드로 이루어진 최소신장트리의 합집합이다.2\. 위 개념을 이용해서 특정 노드부터 시작하여 최소신
strcmp, strtok 안쓰고, c로 문자열 hash 푸는 습관 키우기가장 많이 받은 선물
간단한 구현 문제
Greedy로 풀 수 있는 문제.단, \[0, 3, 1, 2, 2, 4]와 같은 Case를 처리해주기 위해 Greedy 과정 중 기준 값 Update가 필요하다.