Algorithm
프로그래머스
Python
Programmers Etc

홀수 vs 짝수

문제 Link (opens in a new tab)

def solution(num_list):
  even_sum = 0
  odd_sum = 0 
  for i in range(len(num_list)) :
    if i % 2 == 1 : 
      odd_sum += num_list[i]
    else :
      even_sum += num_list[i]
      
  return max(even_sum, odd_sum)

완주하지 못한 선수

문제 Link (opens in a new tab)

내 풀이

def solution(participant, completion):
  completion_hash = {}
  for c in completion : 
    if c in completion_hash : 
      completion_hash[c] += 1
      
    else :
      completion_hash[c] = 1
      
  for p in participant : 
    if p in completion_hash : 
      completion_hash[p] -= 1
      if completion_hash[p] == -1 :
        return p
    else : 
      return p

다른 사람 풀이

hash 함수를 사용하면 해당 값의 메모리 주소를 출력해주는 것 같다.
"A"라는 값이 있고 ["A","A"]라는 배열이 있을 때 index 1번과 2번은 모두 같은 주소를 가르키고 있다.
그래서 hash 함수를 사용해서 모든 hash 값들을 더해준 다음에 completion에 있는 hash 값들을 빼주면 남는 단 1개의 hash 값이 있고 그 hash 값에 대한 value를 출력함으로써 답을 찾는 것이다.
해당하는 풀이의 문제점은 완주하지 못한 사람이 단 한 명 뿐이라는 전제하에서만 가능하다는 것이다.

def solution(participant, completion):
    answer = ''
    temp = 0
    dic = {}
    for part in participant:
        dic[hash(part)] = part
        temp += int(hash(part))
    for com in completion:
        temp -= hash(com)
    answer = dic[temp]
 
    return answer

K번째수

문제 Link (opens in a new tab)

내 풀이

def solution(array, commands):
  result = []
  for c in commands : 
    i = c[0] - 1
    j = c[1]
    k = c[2]
    arr_tmp  = []
    for count in range(j) : 
      if i <= count <= j  :
        arr_tmp.append(array[count])
    arr_tmp.sort()
    result.append(arr_tmp[k - 1])
  return result

공배수

문제 Link (opens in a new tab)
자꾸 틀리는 문제만 늘어나는거 같아서 성취감을 느끼고 싶어서 풀어봤다...

내 풀이

def solution(number, n, m) : 
  if number % n == 0 and number % m  == 0 :
    return 1
  return 0