일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- substr
- 2018
- 백트래킹
- 삼성SW역량테스트
- 코딩스킬
- dfs
- 코딩테스트
- 삼성
- 레벨3
- 브루트포스
- 프로그래머스
- 문자열
- swea
- 레벨2
- 이런게4문제
- find
- 백준
- C++
- 모의SW역량테스트
- Sort
- BFS
- Set
- dp
- Map
- KAKAO
- 삼성SW테스트
- 시뮬레이션
- STL
- priority_queue
- 완전탐색
- Today
- Total
목록전체 글 (108)
-
완전 탐색 문제다. 접근법을 dfs로 백트래킹하여 찾아보려 했으나 '순차적인' 문자열만 만들 수 있어 풀이가 어려웠다. 길이가 1부터 전체 사용하는 문자열을 만들 수는 있지만, numbers로 "17"이 주어졌을 때 "1", "7", "17"은 만들 수 있지만 "71"은 만들 수 없다. 그래서 다른 방법을 생각해봤다. "주어진 숫자를 내림차순하고 각 숫자를 이루는 숫자가 몇 번 등장하는지 배열을 써서 2부터 주어진 숫자까지 루프를 돌면서 그 숫자에 등장하는 숫자들이 배열의 요소 이하로 등장하는지 검사하고, 이것이 소수이면 answer++하자!" 즉, 내림차순하면 최대 범위를 구하게 되는 것이고, 2이상의 값부터 검사를 해서 유효한 숫자이면 소수검사를 하는 것이 알고리즘이다. 만약 1이하의 값이 numbe..
https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 | 프로그래머스 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 r programmers.co.kr 문자열을 정렬한 뒤, 뒤의 문자열에서 find로 앞의 문자열을 넣어 ..
https://programmers.co.kr/learn/courses/30/lessons/42841 코딩테스트 연습 - 숫자 야구 | 프로그래머스 [[123, 1, 1], [356, 1, 0], [327, 2, 0], [489, 0, 1]] 2 programmers.co.kr 완전 탐색 유형이라고는 하지만 for문 네 개면 풀리는 싱거운 문제다. 11번줄의 사항을 넣지 않으면 실패하는 테스트케이스가 존재하므로 꼭 넣어줘야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 #include #include using namespace std; int solutio..
C++을 활용해 삼성 SW 역량테스트 문제를 풀어보면 map이나 set은 그다지 필요가 없다. 다만 프로그래머스의 다양한 문제들을 다른 회사 대비용으로 풀다보면서 이 컨테이너들을 가끔 접하게 됐다. 사용이 미숙해 이번 기회에 자주 쓰이는 함수들을 정리해보았다. 아래의 실행 화면과 써둔 해당 라인을 같이 보면 이해가 쉽다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 7..
컨테이너를 이용해 의상 종류별로 몇 개의 요소가 있는지 확인한 뒤, 그 종류를 사용하지 않은 경우를 + 1한 것들을 모두 곱한다. 마지막으로 모두 사용하지 않은 경우는 없으므로 1을 뺀 것이 답이 된다. map 컨테이너에 key값이 아직 존재하지 않더라도 map[key]++;하면 자동으로 생성되는 것을 알았다. 순회방식은 iterator을 사용해 해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include #include #include using namespace std; int solution(vector clothes) { map m; for (int i = 0; isecond+1); } return temp-1; } http://colorscripter.co..
https://programmers.co.kr/learn/courses/30/lessons/1835 코딩테스트 연습 - 단체사진 찍기 | 프로그래머스 단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두 달라 어떤 순서로 설지 정하는데 시간이 오래 걸렸다. 네오는 프로도와 나란히 서기를 원했고, 튜브가 뿜은 불을 맞은 적이 있던 라이언은 튜브에게서 적어도 세 칸 이상 떨어져서 서기를 원했다. 사진을 찍고 나서 돌아오는 길에, 무지는 모두가 원하는 조건을 만족하면서도 다르게 programmers.co.kr 2017년 카카오 코드 본선 문제다. 친구들 8명의 위치에 대한 조합을 ..
https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 | 프로그래머스 programmers.co.kr 그리디 유형의 레벨 2 문제다. 맨 처음에 조건을 잘못 읽어서 맨 큰 숫자부터 하나씩 뽑아서 배치해 리턴하는 문제인 줄 알았으나, "주어진 문자열의 순서를 바꾸지 않고 k개 만큼 지워서 만들 수 있는 가장 큰 수를 리턴" 하는 문제였다. 이 문제를 풀기 위해서는 자릿수에 대한 개념이 필요하다. 가령, 8자리 number 문자열이 주어지고, k가 3으로 주어진 경우, 총 5자리의 숫자를 만들어야 한다. 문자열의 순서를 바꾸지 않고 맨 처음 자릿수를 만들 때는 첫 번째 숫자부터 끝에서 5번째 자리의 수까지 고려할 수 있다. 왜..