본문 바로가기

코딩테스트 공부31

[C++] level2 소수 찾기 42839 📌소수 찾기 /* 해당 문제 설명은 링크로 대체한다. */📌풀이 이 문제는 주어진 문자열에서 조각 조각으로 나눠서 소수를 찾아내는 문제이다. 이것은 next_permutation() 을 이용해야 함을 알 수 있다. 왜냐, 입출력 예시도 있지만 17이 주어질 때 7, 17, 71 이런 식으로 숫자로 구할 수 있는 경우의 수 중 소수를 골라서 count를 증가시켜줘야하기 때문이다. 그래서 나는 isPrime()를 통해서 소수를 먼저 찾았고, do-while()을 돌면서 해당 순열에서 숫자를 substr()로 뽑아내 소수라면 set에 담아두었다. set을 사용한 이유는 순열에 따라 만들어지는 소수가 이미 만들었다면 또 중복해서 담지 않기 위함 그리고 set의 size()를 반환하였다. 📌코드 #include .. 2021. 8. 31.
[C++] 5주차 위클리문제 사전모음 84512 📌사전모음 /* 해당 문제 설명은 링크로 대체한다. */📌풀이 처음에 문제를 읽고 이게 무슨 말이야 싶었다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 질문하기에 어떤 분이 달아주신 댓글 덕에 이해했는데 ... ㅎ........ 아래와 같이 문자가 만들어지는 방식이다. A AA AAA AAAA AAAAA AAAAE AAAAI AAAAO AAAAU AAAE ...여기서 공식을 이용하면 쉽게 풀어낼 수 있을 것 같은데 나의 경우 공식을 찾다가 못찾겠어서 결국 재귀함수로 돌면서 set에 담았고, set을 돌면서 word와 같을 경우 idx를 반환하는 식으로 풀었다. 📌코드 #include #include #include using namespace std; vector v = {"A","E","I","O","U"}; se.. 2021. 8. 31.
[C++] level2 단체사진 찍기 1835 📌단체사진 찍기 /* 해당 문제 설명은 링크로 대체한다. */📌풀이 이 문제는 {A, C, F, J, M, N, R, T} 각각 어피치, 콘, 프로도, 제이지, 무지, 네오, 라이언, 튜브을 의미하는데 이들의 인덱스를 서있는 위치라고 생각하고, data의 조건에 따라 경우의 수를 맞춰 계산하면 된다! 순열에 경우의 수를 구해야 하므로 next_permutation을 이용해야 한다는 점을 기억! 그래서 우선 list라는 vector에 담아두고, data의 조건 해당하는 값의 index를 구하면 2명의 인덱스가 나오는데 이 두개를 뺀 값이 data의 조건 중 간격에 해당된다면 flag를 true로 두고 아니면 false로 둔다. //삼항연산자로 구현 그리고 for문을 나와 다시 순열을 구하기 전 flag값이.. 2021. 8. 24.
[C++] 위클리챌린지 4주차 직업군 추천하기 84325 📌[직업군 추천하기](https://programmers.co.kr/learn/courses/30/lessons/84325?language=cpp) /* 해당 문제 설명은 링크로 대체한다. */ 📌풀이 table이 ["SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JAVASCRIPT C JAVA"] 이런 식으로 담겨있다. 그러므로 행 별(SI, CONTENTS, ...)로 진행을 직군에 따라 languages에 포함된 언어가 선호도(pref.. 2021. 8. 23.
[C++] level2 땅따먹기 12913 참고자료 https://hwan-shell.tistory.com/202 해당 문제는 위 블로그를 참고하여 해결하였습니다. 📌땅따먹기 /* 해당 문제 설명은 링크로 대체한다. */ 📌풀이 처음에 규칙을 지키면서 최고점을 구하는 완전 탐색 방식으로 풀이했더니 시간초과가 발생했다. 이런 최고점을 구하는 문제의 경우 DP를 이용하는게 적합하다는 구글링을 보았고, DP는 공부하지 않았기 때문에 공부하고 코드를 다시 보니 이해할 수 있었다. DP? : 문제를 작은 인스턴스들로 나누고 상향식(Bottom-up) 순서로 풀어나가면서 문제의 값을 정해놓고 필요할 때 가져와 문제를 해결하는 방식이다. //기억하며 풀기(Memoization)라 생각하면 된다. //점화식을 세울 수 있어야 함 이 문제에서의 점화식은 각 행별.. 2021. 8. 22.
[C++] level2 삼각달팽이 68645 📌삼각달팽이 /* 해당 문제 설명은 링크로 대체한다. */ 📌풀이 예 ~ 전에 알고리즘랩스 2주 교육 수강하면서 이렇게 배열을 다른 방향으로 채워나가는 문제를 풀어본 적이 있어서 어렵지 않게 해결할 수 있었다. 이런 문제의 경우 정삼각형보다는 직각삼각형으로 생각해두고 1)좌하향 2)우측 3)우상향 순서로 구현하는 방식을 생각하면 접근하는데 어렵지 않다. 📌코드 #include #include #include using namespace std; vector solution(int n) { vector answer; vector numbers(n, vector(n, 0)); //값을 채워 넣을 직각 삼각형 int num = 1, x = -1, y = 0, p = n; //배열 채우기 for (int i =.. 2021. 8. 22.