프로그래머스 모의고사
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42840# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가..
프로그래머스 소수 찾기
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42839#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~..
프로그래머스 최소직사각형
·
코딩테스트 연습
문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..
프로그래머스 H-Index
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제만 보면 생각보다 간단하게 느껴진다. 문제를 보면 조건이 여러 개인 것을 알 수 있다. 조건을 확인하기 위해 반복문을 여러 개 썼다가는 분명 시간 초과가 날 것이다. 때문에 어떻게 하면 문제를 효율적으로 접근할 수 있을지 생각해 보았다. 문제를 처음 보면 이해를 하고, 쉽게 푸는 방법을 고려해봐야 한다. 문제를 단순하게 만들어서 접근한 뒤에 하나씩 조건을 붙여 해결하는 방법을 지향한다. 누구나..
프로그래머스 가장큰수
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문..
프로그래머스 의상
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 때 map과 unordered_map의 차이는 key를 기준으로 정렬 O -> map key를 기준으로 정렬 X -> unordered_map key값으로 hash value를 찾는데 unordered_map가 훨씬 빠르다고 한다(평균 O(1)) 또한, map을 초기화하지 않은 상태에서 현재 key가 존재하지 않지만, map[key]++을 하면 0으로 초기화 된 후 ++연산을 하기 때문에 어떤..
백준 11501번:주식
·
코딩테스트 연습
11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 이번 문제는 어렵게 생각해서 그런지 시간이 생각보다 오래 걸렸다. 총 3번에 걸쳐서 알고리즘을 바꿨다. 입력한 대로 정답은 제대로 나왔지만 문제는 시간 이었다. 지금부터 내가 풀었던 3개의 알고리즘을 설명해볼 생각이다. 1번째 알고리즘 테스트 케이스를 입력 받는다. 총 몇 일 동안 주식을 할 건지 입력할 건지 입력 받는다. 입력된 날들에 대해 반복하면서 각 날의 주식 가격을 입력받는다. max_element 알고리즘을 통해서 vector에서 가장 큰 ..
프로그래머스 전화번호 목록
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번에는 Level2 문제를 풀어보았다. 이번에도 해시 문제를 풀어보았다. 문제를 읽어보면 처음에는 단순하게 접근하면 쉬울거라고 생각했다. 음…처음에 보고 문자열 비교니깐 그냥 for문으로 반복시켜주면 될거라고 생각했다. 근데 당연히 시간초과가 뜨겠지ㅎㅎ라는 생각을 가지며 그냥 무작정 코드를 작성하였다. 내가 생각한 알고리즘은 단순했다. 다음과 같다. 먼저 첫 번째 문자와 바로 다음 문자 길이를 ..
프로그래머스 완주하지 못한 선수
·
코딩테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 생각보다 간단한 문제이지만, 해시가 주제 이므로 해시 map을 이용해서 풀었다. 내가 생각한 알고리즘은 다음과 같다. 먼저 unordered_map을 이용하여 참가자 목록을 관리하기 위해 list를 선언해준다. 참가자 목록을 추가하고, 기존에 같은 이름이 있는지 확인 후, 있다면 값을 증가시킨다. 완주한 사람을 찾아서 해당 이름의 value값을 감소 시켜 준다. 감소시켜 0이 되면 list에서 제..
프로그래머스 포켓몬
·
코딩테스트 연습
프로그래머스 포켓몬 https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Level 1 문제라 그런지 문제를 처음 봤을 때 생각보다 간단하게 구현이 가능할 거라고 생각했다. 내가 생각한 알고리즘은 다음과 같다. 새로운 벡터 v를 만듭니다. 함수에서 받아온 nums 배열의 값을 백터v의 인덱스로 사용하였다. 해당 인덱스를 1씩 증가시키도록 설정하였다. 그리고 0이 아닌 값을 가진 인덱스만 찾아, count를 증가시키는 반복문을 통해 백터v를 처리하였다...