Algorithm/Programmers 12

[Programmers - 자바] 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 참 골치아픈 정렬이다. 일단 숫자끼리 비교하기에는 너무 신경쓸게 많아서 문자열 바꿔서 compareTo 함수로 비교를 하려고 했다. 근데 다들 힘들어하듯(나만 어렵나) 3 이랑 30 이랑 34 이거 비교할때 34 > 3 > 30 이다. 매우 매우 짜증난다. 어떻게 할까 생각한게 34 랑 3 비교할때..

[Programmers - 자바] 구명보트

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 누가 봐도 그리디 하다. 두명씩만 탈 수 있는 제한 조건때문에 투 포인터 식으로 풀어보았다. 코드를 보자. import java.io.*; import java.util.*; class Solution { public int solution(int[] people, int limit) { int answer = 0; long sum =..

[Programmers - 자바] 거리두기 확인하기

https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 일일히 다 확인하다가 한번 죽고나서 생각을 바꾸었다. 거리두기 위반하는 경우는 응시자 간의..

[Programmers - 자바] 문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 그동안 문제는 많이 풀었는데 오랜만에 포스팅한다. 정말 문자열 처리하는 문제 꽤 많이 풀었다고 생각했는데 역시 할 때마다 너무 어렵고 힘들다. 호다다닥 풀어야 하는데 너무 오래걸린다. 매번 적응이 안돼 하... 풀이를 해보자. 큰 틀을 보면 int answer = 1001; String ans = ""; 으로 선언하고 문자열을 압축한 것을 ans 에 넣고..

[Programmers - c++] 신규 아이디 추천

https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 그냥 시키는 대로 하면 되는 문제이다. 다만 문자열 처리하는 것을 c++ 로 하기는 참 힘들다. 하루 빨리 java 로 갈아타야하는데 c++에 너무 익숙해서 처음부터 java 로 하기는 쉽지 않다. 언제쯤 갈아타지 1단계 for(int i=0; i='A' && new_id[i]

[Programmers - c++] 비밀지도

https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr bitset 이라는 라이브러리를 써보았다. 풀고나서 다른 사람풀이를 보니 bitset 을 안쓰고 그냥 해도 되는 것을 깨달았다.. 쉣 그렇지만 풀이를 해보면 string s; for(int i=0; i

[Programmers - c++] 모의고사

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 배열에 미리 패턴을 받아놓고 answers vector 를 탐색하면서 맞나 틀리나 확인후 맞으면 변수 값을 증가 시키면 끝나는 문제였다. 가장 높은 점수를 받은 사람이 여럿일 경우를 처리하는데 좀 시간이 걸렸는데 뭔가 굉장히 비효율적으로 한 것 같다. 코드를 보면 우선 int a[5] = {1,2,3,4,5}; int b[8] = {2,1,2,3,2,4,2,5}..

[Programmers - c++] 로또의 최고 순위와 최저 순위

https://programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr set 을 안쓰고도 풀 수 있을 거 같은데 set 자료구조의 find 함수가 뭔가 굉장히 편리해서 이거 쓰려고 구지 win_nums 배열에 있는 원소들을 set 으로 옮겨 담았다. 그 후 lottos vector 의 원소를 뽑아와서 set 에 있으면 변수 correct 를 1 증가시키고 만약 뽑아온 원소가 0 이면 ..

[Programmers - C++] 두 개 뽑아서 더하기

https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr set 만 쓰면 굉장히 쉬운 문제이다! set 자료구조에서 insert 함수는 집어넣는 원소가 이미 있으면 집어넣지 않는 것으로 알고 있는데 이래서 set 만 쓰면 된다! 이중 for 문을 써서 배열을 돌면서 합을 set 에 넣고 answer vector 에 다시 옮겨 담아주면 끝이다. #include #inclu..

[Programmers - C++] 완주하지 못한 선수

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 중복되는 이름이 있어 multiset 을 사용하였다. participant 목록을 multiset 에 집어넣고 completion vector 의 목록을 탐색하면서 완주자를 participant multiset 에서 지웠다. 문제에서 한명만 완주 못하였다고 하였으므로 multiset 에는 1명만 남아있게 될 것이고 그 1명을 반환하면 해결된다..