[Programmers/SQL] 입양 시각 구하기(2)
2022. 9. 25. 16:01
알고리즘/Programmers
문제 설명 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE NAME VARCHAR(N) TRUE SEX_UPON_OUTCOME VARCHAR(N) FALSE 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각..
[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 으로 한 구문씩..
[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
[Programmers] Level 2. 스킬트리 (2018 윈터코딩 / C++)
2019. 8. 12. 07:53
알고리즘/Programmers
정리 선행 스킬 순서에 맞춰 스킬을 올려야 가능한 스킬트리가 되고 그렇지 않으면 불가능한 스킬트리가 된다. 그래서 나는 다음과 같이 풀었다. 그런데 너무 지저분하게 풀은 느낌이 있다. 누군가 더 보기좋고 깔끔하게 풀지 않았을까? 그래서, 나는 이렇게 풀어보았다. 1) 유저가 만든 스킬트리 (skill_trees) 에서 선행스킬만 따로 뽑았다. 2) 유저 스킬트리에서 뽑은 선행스킬(check)과 스킬 트리 순서(skill)과 비교했다. 3) 선행 스킬(i)이 일치했을 때 먼저 배워야 하는 선행 스킬(i-1)이 있는지 비교했다. 4) bool 형을 이용해서 선행 스킬(i) 가 있지만 먼저 배워야 하는 선행 스킬(i-1)이 없다면 false, 있다면 true. 5) 비교 결과 가능하다면 카운트를 증가시켜줘서 ..
[Programmers] Level 1. 체육복 (C++)
2019. 7. 26. 00:00
알고리즘/Programmers
정리 정말 많은 고민을 했던 문제였다. 처음에 문제를 보고나서 어떻게 풀지 고민을 했는데 2가지 방법이 생각이 났다. 첫 번째는, 체육복이 있으면 1, 체육복이 없으면 0, 여벌의 체육복이 있으면 2 로 정해두고 여벌의 체육복이 있는 학생의 수를 1 감소하고 없는 학생의 수를 1로 증가시켜서 마지막에 1인 학생의 수를 세서 출력하는 방법이다. 두 번째는, 체육복이 없는 학생을 일단 제외하고 여벌의 체육복이 있는 학생의 것을 빌려주면서 카운트를 더하는 방식이었다. 결과는 두 번째 방법으로 풀었는데 2~3시간 가량 고민 끝에 해결한 문제였다. 이 문제를 이렇게 풀어보았다. 1) 체육복을 잃어버린 학생과 여벌의 체육복이 있는 학생이 같다면 제외시켜준다. 2) 전체 학생에서 체육복을 잃어버린 학생을 빼준다. 3..