본문 바로가기

알고리즘27

프로그래머스 - 타겟 넘버 (Python) 문제 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제 설명 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이.. 2022. 6. 9.
프로그래머스 - 체육복 (Python) 문제 programmers.co.kr/learn/courses/30/lessons/42862# 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때,.. 2022. 6. 8.
프로그래머스 - 크레인 인형뽑기 게임 (Python) 문제 출처: programmers.co.kr/learn/courses/30/lessons/64061# 코드 def solution(board, moves): answer = 0 stacklist = [] for i in moves: for j in range(len(board)): if board[j][i-1] != 0: #1 if stacklist and stacklist[-1] == board[j][i-1]: #2 stacklist.pop(-1) answer += 2 else: stacklist.append(board[j][i-1]) #3 board[j][i-1] = 0 #4 break return answer 풀이 #1: move 칸의 위쪽부터 돌아가며 값이 0이 아닐 경우 (인형이 존재할 경우)를.. 2022. 6. 6.
백준 1316 - 그룹 단어 체커 (Python) 코드 n = int(input()) cnt = 0 # 그룹 단어가 아닌 단어의 수 for i in range(n): alphabet = [0 for _ in range(123)] # 1 word = input() for a in range(len(word)): if alphabet[ord(word[a])] != 0: # 2 if word[a] != word[a-1]: # 2-1 cnt += 1 break else: # 2-2 continue alphabet[ord(word[a])] += 1 # 3 print(n-cnt) # 4 풀이 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고,.. 2022. 5. 21.