
Basic Data Types - Nested Lists (Python)
2023. 1. 11. 18:09
알고리즘/HackerRank
Summary 이 문제는 리스트를 응용해서 풀 수 있게 만들어진 문제로 보인다. N 명의 학생의 이름과 점수를 순서대로 입력받아 처리해주어야 한다. 예제를 보면 알 수 있듯이 이름 - 점수 - 이름 - 점수 순으로 입력된다. 문제에서 원하는 결과는 두 번째로 낮은 점수를 가진 학생을 이름순으로 정렬해서 출력하는 것이다. 그래서 단순하게 이름과 점수를 하나의 리스트 [이름, 점수] 로 저장했고 등급을 하나 더 저장했다. 이렇게 한 이유는 일단 점수를 저장해서 두 번째로 낮은 점수를 가져오고 가져온 점수로 검색해서 이름을 출력해야겠다고 생각했다. stds = [] scores = [] for _ in range(int(input())): name = input() score = float(input()) s..

[Python] Basic Data Types - Lists
2023. 1. 10. 18:31
알고리즘/HackerRank
Summary 파이썬의 리스트에 대해서 얼마나 이해하고 있는지 확인할 수 있고 리스트에서 사용할 수 있는 기본적인 함수들을 사용해서 풀 수 있는 문제였다. 문제에서 필요로 하는 옵션은 다음과 같았다. insert append remove pop sort reverse 이런 옵션을 사용해서 리스트에 추가, 삭제, 정렬 등의 기능을 수행하는 문제였다. 그리고 문자를 입력해 문자열을 나누어 명령어와 값 그리고 인덱스를 구분해서 사용해주어야 했다. 이 부분은 다음과 같이 split() 을 사용해서 문자열을 나누어 구분해줄 수 있었다. cmd = input_str.split() split 함수는 기본적으로 공백을 기준으로 문자열을 나누어준다. 원하는 문자로 나누고 싶으면 다음과 같이 괄호 () 안에 문자열을 나누..

Basic Data Types - List Comprehensions (Python)
2023. 1. 8. 19:54
알고리즘/HackerRank
Summary 이 문제는 List Comprehensions 를 통해 풀어보라고 내준 문제인 것으로 보였다. 그래서 List Comprehensions 에 대해서 먼저 알아야할 필요가 있었다. List Comprehensions 에 대해서 간단하게 정리하고 넘어가자면 리스트를 보다 쉽게 만들기 위한 방법이라고 생각하면 된다. 예를 들어, 이 문제를 풀기 위해서 반복문을 통해 문제를 풀어보았다. result = [] for i in range(0, x+1): for j in range(0, y+1): for k in range(0, z+1): if i+j+k != n: result.append([i,j,k]) 이렇게 반복문을 통해 리스트를 만들어도 해결할 수 있지만 List Comprehensions 를 ..

Aggregation - The Blunder (SQL)
2022. 12. 7. 19:28
알고리즘/HackerRank
Summary 이 문제는 키보드가 고장나 Salary 에 0을 입력하지 못했을 경우에 대해서 오차를 구하는 문제였다. 기존의 Salary 의 평균 값을 가져오고 또 0 을 제외한 Salary 의 연봉을 가져와 뺀 값을 구하면 된다. 기존의 Salary 의 평균은 다음과 같이 쉽게 가져올 수 있다. avg(salary) 다음으로 Salary 에서 0 이 없을 경우에 대한 평균을 구해야 한다. 그럼, Salary 에서 0을 제외하기 위해서 REPLACE 문법을 사용해서 0을 제거해줄 수 있었다. replace(salary, '0', '') 그렇게 0을 제외한 Salary 의 평균을 구해주면 된다. avg(replace(salary, '0', '')) 그리고 문제를 보면 반올림을 하라는 문구가 보여 각 평균에..

Advanced Select - The PADS (SQL)
2022. 12. 6. 18:00
알고리즘/HackerRank
Summary 이 문제는 SELECT 의 결과를 어떻게 하나의 문구로 합칠것인가에 대해서 묻는 문제였다. 첫 번째 문제로는 이름과 직업의 앞 자리를 가져와 () 괄호 안에 넣어주어 하나로 만들어주어야 한다. 이름은 그대로 가져오면 되었기 때문에 문제가 되지 않았고 () 괄호 안에 직업의 맨 앞 한자리 문자를 가져와 넣어주어야 한다. LEFT 문법을 사용해 직업의 맨 앞 한자리만 가져온다. 그리고 이름과 괄호를 포함한 문자를 합쳐주어야 한다. 합치기 위해서 CONCAT 문법을 사용해 하나로 합쳐주었다. CONCAT 으로 합쳐질 문구는 다음과 같다. name '(' LEFT(occupation, 1) -> occupation 의 왼쪽 1자리의 문자만 가져온다. ')' 따라서, CONCAT 을 사용해 합쳐서 ..

Advanced Select - Type of Triangle (SQL)
2022. 12. 5. 17:17
알고리즘/HackerRank
Summary 이 문제는 삼각형의 조건에 충족하는지 그리고 조건에 충족한다면 어떤 삼각형인지 타입을 구분하는 문제라고 보면 된다. 삼각형이 성립되는 조건에 대해서 알고 있어야 하고 조건 하에 각 삼각형의 타입을 어떻게 구분할 수 있을지 생각해봐야 한다. 삼각형이 성립되는 조건은 다음과 같다. (가장 큰 변의 길이) < (나머지 두 변의 합) 예를 들어, A B C 로 이루어진 삼각형에서 A 변의 길이가 가장 크다면 A < (B + C) 가 되어야 삼각형이 성립된다. 이 문제에서 정의하는 삼각형의 타입은 다음과 같다. 세 변의 길이가 모두 같으면 '정삼각형' 두 변의 길이가 같고 나머지 하나의 길이가 다르면 '이등변삼각형' 세 변의 길이가 다 다르면 '일반적인 삼각형' 그리고 삼각형이 성립하지 않는다면 '..

[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시까지, 각..
XOR 연산
2022. 2. 2. 19:36
알고리즘/개념정리
알고리즘 문제풀 때 XOR 연산을 사용한다면 3가지만 기억하자. ^ 기호는 XOR 연산을 말한다. 1. XOR 연산은 순서에 상관없음 a ^ ( b ^ c ) = ( a ^ b ) ^ c 2. 자기 자신을 XOR 연산하면 0 이 나옴 a ^ a = 0 3. 0 과 XOR 연산하면 자기 자신이 나옴 a ^ 0 = a 문제 예시 3개의 점이 주어지고 정사각형을 만들기 위한 나머지 점을 구해라. 예시) (x1, y1), (x2, y2), (x3, y3) 의 3개의 점과 나머지 하나의 점을 통해 정사각형을 만들려고 한다. 나머지 점을 구해라. x1 ^ x2 ^ x3 을 했을 때 나오는 수가 나머지 한 점의 x 좌표가 된다. y1 ^ y2 ^ y3 을 했을 때 나오는 수가 나머지 한 점의 y 좌표가 된다. 따라서..