RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚
Algorithm/HackerRank

[HackerRank] 1Week + Day5 - Pairs

Algorithm/HackerRank

[HackerRank] 1Week + Day5 - Pairs

2023. 2. 19. 19:05
728x90
 

Day 5 Interview Questions | HackerRank

Day 5 Interview Questions | HackerRank We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.

www.hackerrank.com

 

1. 문제

배열이 주어질 때, 각 element의 차가 k인 쌍의 개수를 반환해야 합니다.

 

2. 풀이

주어진 배열을 오름차순으로 정렬한다면 쉽게 풀 수 있는 문제입니다.

단! 기본적인 이중 for문으로 수행한다면 시간 초과가 발생할 수 있기 때문에 적절한 조건문을 반드시 추가해주어야 합니다.

 

어떤 조건문을 추가할 수 있을까요?

오름차순으로 정렬한 element들을 하나씩 비교하다보면 그 차이가 k보다 카지는 경우가 있을 것입니다.

이후의 element들은 검사할 필요가 없기 때문에(무조건 k보다 크기 때문에) 반복문을 종료해주면 됩니다. 🤗

# arr[i]: 앞 element, arr[j]: 뒤 element
if arr[j] - arr[i] > k: break

 

전체적인 코드는 아래와 같습니다.

3. 코드

Python
def pairs(k, arr):
    # Write your code here
    size = len(arr)
    arr.sort()
    
    answer = 0
    for i in range(size-1):
        a = arr[i]
        for j in range(i+1,size):
            if arr[j] - a == k: answer += 1
            if arr[j] - a > k: break

 

4. Day5 추가 문제

4.1 Queue using Two Stacks

제목 그대로 python을 사용하여 풀 수 있는 문제였습니다.

q = int(input())
result = []

for _ in range(q):
    query = input().split()
    if query[0] == '1':
        result.append(query[1])
    elif query[0] == '2':
        result.pop(0)
    elif result:
        print(result[0])

 

4.2 Balanced Brackets

여러 코딩테스트 문제에서 볼 수 있는 괄호 짝짓기 문제입니다.

이는 queue를 이용해 쉽게 풀 수 있으며, 코드는 아래와 같습니다. 😌👍🏻

def isBalanced(s):
    # Write your code here
    q = []
    
    for i in s:
        if i == '(' or i == '[' or i == '{':
            q.append(i)
        else:
            if not q: return "NO"
            last = q[-1]
            if last == '(' and i == ')': q.pop()
            elif last == '{' and i == '}': q.pop()
            elif last == '[' and i == ']': q.pop() 
            else: return "NO"
    return "NO" if q else "YES"
반응형

'Algorithm > HackerRank' 카테고리의 다른 글

[Hackerrank] 1Week + Day7  (0) 2023.02.21
[Hackerrank] 1Week + Day6 - BFS  (0) 2023.02.20
[HackerRank] 1Week + Day4 - Truck Tour  (0) 2023.02.18
[HackerRank] Palindrome Index - Python  (0) 2023.02.17
  • 1. 문제
  • 2. 풀이
  • 3. 코드
  • 4. Day5 추가 문제
'Algorithm/HackerRank' 카테고리의 다른 글
  • [Hackerrank] 1Week + Day7
  • [Hackerrank] 1Week + Day6 - BFS
  • [HackerRank] 1Week + Day4 - Truck Tour
  • [HackerRank] Palindrome Index - Python
RIEN😚
RIEN😚
안드로이드 / 코틀린 독학으로 취업하자!

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.