[Programmers] Level 2. 삼각 달팽이 (C++)
2021. 3. 28. 00:02
알고리즘/Programmers
월간 코드 챌린지 시즌 1 에서 출제된 문제다. 난이도는 Level 2. 문제 풀이 처음에 보자마자 무언가 규칙이 있을 것이라고 생각하고 문제를 풀었다. 규칙을 찾으려고하니 너무 어렵게 느껴져 정말 무식하게...😆 문제를 코드로 그대로 옮겨보았다. 2차원 배열을 사용해서 값을 순서대로 입력받았다. 삼각형 모양을 가지고 있고 왼쪽 변부터 값을 입력한다. 그래서 상태 값을 통해 왼쪽일 경우 0, 아래일 경우 1, 오른쪽일 경우 2 로 정했다. 그리고 2차원 배열에 값을 넣어줘야 하니까 x 와 y 를 이용해 배열의 위치를 정해주었다. 나는 2차원 배열을 이용해서 다음 모양으로 값을 넣어주었다. n = 5 일 경우를 예를 들어 풀어보자. 삼각형의 왼쪽 변부터 값을 채워나간다. ( 상태가 0 일 경우 ) 2차원 ..
[Programmers] Level 1. 신규 아이디 추천 (C++)
2021. 3. 22. 17:57
알고리즘/Programmers
문제 풀이 문자열을 처리하는 방법에 대해서 알고 있다면 충분히 풀 수 있는 문제였다. 문자를 풀 수 있도록 순서대로 문제를 해결해 나가면 되기 때문에 문자열을 잘 다룰 수 있다면 쉽게 풀 수 있는 문제였다. 나는 정말 하드하게 문제를 그대로 해석해서 풀어보았다. 다른 언어를 통해 정규 표현식을 사용해 문자열을 제거해주는 방법을 사용하는 사람도 있었고 반복문을 더 간단하게 사용해서 보다 간결한 코드를 작성한 사람도 있었다. 다른 사람들의 코드를 보고 다른 방법으로도 풀어봐야겠다. 소스 코드 #include #include #include #include using namespace std; string solution(string new_id) { string answer = ""; // 1 단계 : 대문..
[Programmers] Level 1. 두 개 뽑아서 더하기 (C++)
2021. 3. 22. 16:48
알고리즘/Programmers
풀이 방법 우선 가장 처음으로 든 생각은 각 숫자의 합을 배열에 넣어서 정렬하고 중복을 제거하면 되겠다 ! 정말 단순하게 생각한 방법이었다. 물론 쉽게 답을 맞출 수 있었는데 다른 사람의 풀이를 보다가 set 을 이용한 방법으로 푼 사람을 보게 되었다. 전혀 생각지도 못한 방법이었기 때문에 워후... 이런 방법도 있구나 생각했다. set 의 특징 중 하나가 key 값을 중복 값을 허용하지 않는다는 점이다. 그리고 insert() 함수를 사용하게 되면 값을 입력할 때 자동으로 정렬되어 값이 들어가게 된다. set 을 사용하면 정렬과 중복 제거가 동시에 이루어지기 때문에 정말 이 문제를 위한 컨테이너다.👍 소스 코드 #include #include #include #include using namespace..
[Programmers] Level 1. 크레인 인형뽑기 게임 (C++)
2021. 3. 22. 16:23
알고리즘/Programmers
풀이 방법 문제를 이해한 내용에 대해서 간단하게 수도코드로 설명하자면 1. 크레인의 위치를 확인하고 순서대로 인형을 뽑는다. 2. 인형을 꺼낼 위치에 있는 인형 중 가장 위에 있는 인형을 꺼낸다. 3. 인형을 꺼내어 다른 바구니에 순서대로 담는다. 4. 만약 바구니의 가장 위에 있는 인형과 같다면 4-1. 바구니의 가장 위에 있는 인형을 꺼낸다. 5. 바구니의 가장 위에 있는 인형과 다르다면 5-1. 바구니에 인형은 담는다. 6. 인형을 꺼낸 위치에 인형이 없다고 표시한다. 이런 과정으로 이해했다. 이런 과정을 통해 아래의 코드를 짰다. 문제를 푸는 과정에서 인형을 뺐으면 인형이 없는 것처럼 0으로 초기화 해줘야 하는데 0으로 초기화해주지 않아서 잘못된 결과를 가져왔었다. 그래서 cout 으로 한 구문씩..
[백준 알고리즘] 9020번 : 골드바흐의 추측
2020. 2. 24. 21:23
알고리즘/BaekJoon
문제 9020번 : 골드바흐의 추측 9020번: 골드바흐의 추측 문제 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. www.acmicpc.net 내가 작성한 코드(C++ 성공) #include using namespace std; int main() { cin.tie(0); int T, N; int h, ..
[Programmers] Level 2. 위장 (C++)
2019. 8. 31. 18:24
알고리즘/Programmers
소스코드 #include #include #include #include #include using namespace std; int solution(vector clothes) { int answer = 1; vector v; map m; map::iterator iter; for(int i=0; i
[백준 알고리즘] 2698번 : 인접한 비트의 개수
2019. 8. 24. 17:36
알고리즘/BaekJoon
문제 2698번 : 인접한 비트의 개수 2698번: 인접한 비트의 개수 문제 0과 1로 이루어진 수열 S가 있다. S의 첫 수는 s1이고, 마지막 수는 sn이다. S의 인접한 비트의 개수는 다음과 같이 구할 수 있다. s1*s2 + s2*s3 + s3*s4 + ... + sn-1 * sn 위의 식을 이용하면 수열 S에서 인접한 1의 개수를 구할 수 있다. 예를들어, 011101101의 인접한 비트의 개수는 3이 되고, 111101101은 4, 010101010은 0이 된다. 수열 S의 크기 n과 k가 주어졌을 때, 인접한 비 www.acmicpc.net 내가 작성한 코드 (C++ 성공) #include using namespace std; int dp[101][101][2]; int main(){ cin..
[C++] 표준 입력 함수 정리
2019. 8. 15. 23:14
프로그래밍 언어/C++
입력을 받으면서 공백과 개행문자 관련해서 어떤 입력 함수를 써야하는지 잘 몰라서 정리해보았다. cin #include cin >> ; cin 은 문자와 문자열 모두 입력받을 수 있다. 공백, 개행 문자를 무시한다. cin.get() #include char c; c = cin.get(); cin.get() 은 문자만 입력받을 수 있다. 공백과 개행 문자를 입력받을 수 있다. cin.getline(변수 주소, 길이, 종결 문자) #include char c[10]; cin.getline(c, 10); cin.getline(c, 10 , i); // 종결 문자인 i 를 만나면 종료 cin.getline() 은 문자열만 입력받는다. 공백과 개행 문자를 입력받을 수 있고 공백은 저장하고 개행은 종료하면서 NUL..