알고리즘/프로그래머스

    프로그래머스 - 짝지어 제거하기프로그래머스 - 짝지어 제거하기

    programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 1. 접근법 스택 2. 풀이 끝에서 부터 한 글자씩 스택에 옮기면서 연속으로 같은 문자가 2개 인지 파악 3. 코드 import java.util.*; class Solution{ public int solution(String s){ int answer = 0; int sOfSize=s.length(); Stack stack = new Stack(); for(i..

    프로그래머스 - 스킬트리

    programmers.co.kr/learn/courses/30/lessons/49993#fnref1 코딩테스트 연습 - 스킬트리 programmers.co.kr 1. 접근법 해시맵 2. 로직 1) skill에 대한 딕셔너리 생성 2) skill_trees중 skill이 포함된 경우, 인덱스를 기준으로 그 전 스킬들을 찍었는지 확인 다른 풀이 sas-study.tistory.com/342 [Java 알고리즘] 프로그래머스, 스킬트리 스킬트리 문제 설명 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배 sas-study.tistory.com 이 분은 자료구조를 사용하지 않고 replace와 indexOf를..

    프로그래머스 - 순위

    programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 1. 유형 그래프 2. 풀이 설계 1) List로 그래프 그리기 2) dfs돌려서 나보다 낮은 애들 값 파악 3) dfs의 리턴값을 이용해서 나보다 순위 높은애들이 몇명이었는지 파악 3. 코드 import java.util.*; class Solution { static List list[]; static int rank[]; static boolean visit[]; static int max; static int dfs(int index){ int res=0; for(int ne..

    프로그래머스 level2 - 가장 큰 수

    programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 1. 유형 정렬 2. 풀이 추상화 - 정렬 - 문자열로 변환 다른 정렬문제와는 다르게 Int를 정렬하는게 아니라, 문자열을 정렬한다는 점이 색달랐다. static class Node implements Comparable{ String n; Node(String n){ this.n=n; } @Override pu..

    프로그래머스 level2 - 위장

    programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 1. 유형 해시 2. 풀이 처음에 2가지 방법으로 풀어보았다. 우선 잘못된 방법. 재귀함수 사용해서 조합을 구함. 이 문제를 combination으로 구할 경우 94점이 나옴. 1번에서 시간 초과가 나옵니다. 따라서, 이 문제는 수학적 지식으로 풀어야합니다. 즉 1번 예제에서, 헤드기어2개, 안경1개 인 경우 (2+1) * (1+1) -1 로 풀면 답이 나옵니다. 해드기어2개에 왜 1을 더했냐? 해드기어 2개 선택하는 경우의 수 + 선택을 한개도 안하는 경우의 수 = 3 식의 맨 마지막에 -1을 해주는 이유? 전부다 선택을 안 하는 경우의 수 빼주기. 3. 코드..

    2021 카카오공채 - 신규 아이디 추천

    programmers.co.kr/learn/courses/30/lessons/72410?language=java 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 1. 유형 문자열 2. 풀이 이 문제는 모듈화가 중요합니다. 그래야 나중에 실수했을 때, 디버깅이 편합니다. 각 단계별로 함수를 만들어서 시키는대로 구현합니다. 딱히, 특별한 구현법이 없는거 같습니다. 문자열을 수정하기 편하게 ArrayList 자료구조를 사용하고, 끝 부분부터 탐색하며 remove를 해줬습니다. 3. 디버깅 실수 case4부분..

    프로그래머스 level2 - 소수 찾기

    https://programmers.co.kr/learn/courses/30/lessons/42839?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이방법 sort로 최대값 구하기 최대값까지 소수 찾기 찾은 소수를 string으로 바꿔 numbers에 포함되면 answer증가 #include #include #include #include using namespace std; int answer =0; int numSize = 0; bool cmp(char a, char b) { return a > b; } void isCheck..

    프로그래머스 level2 - 프린터

    https://programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 필요개념 덱에 대한 개념 for(auto) 를 이용하여 덱 탐색 pair 사용 법 flag를 다뤄서 맞는 조건에 찾기 /* --스택을 탐색 방법? -- */ #include #include #include using namespace std; int solution(vector priorities, int location) { int answer = 0; deque q;//인덱스, 우선순위 vector res..

    2017 카카오코드 본선 - 단체사진 찍기

    https://programmers.co.kr/learn/courses/30/lessons/1835 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 중요개념 next_permutaion(배열의 시작주소, 끝 주소) : 순열을 구해준다, algorithm 헤더 #include #include #include #include using namespace std; bool pos_check(vector s, vector data) { for (int i = 0; i < data.size(); i++) { int first; int second; int num =..

    2019카카오 인턴쉽 - 불량 사용자

    https://programmers.co.kr/learn/courses/30/lessons/64064# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 금지된 아이디가될 가능성이 있는 user_id를 찾아서 vector를 만든다 만들어 놓은 vector를 재귀함수와 비트마스크를 이용하여 중복되지 않게 만든다 중요 개념 1001 | 0110 -> 1111 1001 & 0110 -> 0000 1>3 -> 1 1을 오른쪽으로 3만큼 이동 bool visited[1 배열크기가 2^8이다. 왜? 1을 8만큼 이동하고 10진법으로 바꿨기 때문. 비트마스크 관련 링크 ..

    2020 카카오 기출 괄호 변환

    https://programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 유형: 문자열 변환 is_check()에서 stack을 활용하여 "올바른"인지 "균형잡힌" 인지 구분한다 is_check()에서 "올바른"과 "균형잡힌"의 경계선을 구한다. substr을 활용하여 u,v로 나눈다 /* main 입력 ans+=solution 출력 solutioin w if 빈 문자 리턴 flag = is_check w pos를 구했으니 u,v 알 수 있음 if 균형이면 tmp = ( + sol..