Strings - Alphabet Rangoli (Python)
2023. 1. 23. 17:24
알고리즘/HackerRank
Summary 이 문제를 보자마자 문자열의 인덱스에 대한 이해와 join() 함수 그리고 center() 함수를 사용해서 풀면 되지 않을까 하는 생각이 들었다. 문제를 풀기 전에 Rangoli 가 궁금해서 무엇인지 찾아봤다. 인도의 전통 문양이라고 하고 아래와 같은 패턴을 가지고 있어서 이 문제의 이름을 Rangoli 라고 지은게 아닌가 싶었다. 다시 돌아와 우선 알파벳을 가져와 문자열로 저장해주었다. import string alpha = string.ascii_lowercase 알파벳 소문자를 가져오는 방법에는 여러가지가 있어서 생각나는 대로 가져오면 된다. 나는 구글링을 통해 string 라이브러리를 사용해서 알파벳 소문자를 가져왔다. 그리고 알파벳을 문제가 원하는 순서에 맞게 출력을 하려고 반복문..
Strings - Find a string (Python)
2023. 1. 12. 20:01
알고리즘/HackerRank
Summary string 관련 함수를 사용해서 푸는 문제였다. 나는 어떤 함수를 사용해야하는지 몰라 for 반복문으로 열심히 풀어보고 있다가 잘 안되서 찾아보니 startswith() 라는 함수가 있었다. startswith() 함수 를 사용해서 문자열이 특정 문자열로 시작하는지 확인할 수 있다. 따라서, 이 함수를 사용해서 문제를 풀 수 있었다. 코드를 보면 string 의 각 문자만큼 반복문을 돌려주었다. for i in range(0, len(string)): 그리고 앞의 문자 하나씩 제외하면서 sub_string 의 문자열을 포함하고 있는지 찾아주었다. if string[i:].startswith(sub_string): cnt = cnt + 1 만약 포함하는 문자열이 있다면 카운트를 증가시켜주었..
HackerRank Python 문제 풀이 참고 사이트
2023. 1. 11. 18:41
알고리즘/HackerRank
HankerRank Python 문제를 풀때 참고할만한 사이트가 있어 가져와봤다. 같은 문제지만 푸는 방법은 여러개라서 사이트에 적혀있는 답이 무조건 맞는 답이라고 생각하지말고 자기만의 방법으로 문제를 풀어보고 안 풀리면 그때 찾아보면 좋을 것 같다. 도움이 될만한 사이트들을 정리해서 모아놔야겠다. HackerRank Python 풀이 사이트!! https://www.artofcse.com/learning/problem/python Python Problem Solution of HackerRank • Art of CSE In this series, I will share the code of HackerRank's Python problems. I will suggest you to not to cop..
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 을 사용해 합쳐서 ..