반응형

 

카드 뭉치 소스 코드

def solution(cards1, cards2, goal):
    answer = 'Yes'
    cards1_idx = 0
    cards2_idx = 0
    
    for word in goal:
        if cards1_idx != len(cards1) and word == cards1[cards1_idx]:
            # A and B -> A를 먼저 판별 / A에서 통과하면 B를 판별 / A에서 통과하지 않으면 B까지도 가지 않습니다.
            cards1_idx += 1
        else: # 첫번째 카드뭉치에 없다면
            if cards2_idx != len(cards2) and word == cards2[cards2_idx]:
                cards2_idx += 1
            else: # 두번째 카드뭉치에도 없다면
                answer = 'No'
                break
    
    return answer
반응형
반응형

 

안녕하세요 Henry입니다~

 

오늘은 프로그래머스 Level 2 문제 중에 최댓값과 최솟값이라는 문제를 풀어보았습니다.

 

왠지 프로그래머스 Level 2 문제 중 가장 쉬운 난이도를 가진 문제일 것 같은데요,

 

저는 정렬과 문자열 인덱싱을 사용하여 문제를 풀었습니다.

 

def solution(s: str) -> str:
    sorted_ls = sorted(s.split(' '), key=lambda x: int(x))
    return sorted_ls[0] + ' ' + sorted_ls[-1]

 

아래는 문제 풀이 영상입니다.

https://youtu.be/4IFhPzwipKA

 

반응형
반응형

 

안녕하세요 Henry입니다~

 

오늘도 코딩테스트 문제를 한 문제 풀어보았습니다.

프로그래머스의 Level 1 문제인데요,

 

약수의 합을 구하는 문제입니다.

문제를 풀면서 가장 중요했던 부분은, 약수인지 여부를 탐색하는 기준으로 

해당 index 값의 제곱값이 대상 정수를 넘지 않는 범위에서만 확인을 해주어야 한다는 것입니다.

 

아래는 제가 문제를 푼 코드입니다.

def solution(n):
    answer = 0
    current_number = 1
    while current_number*current_number < n:
        if n%current_number == 0:
            answer += current_number
            answer += n/current_number
        current_number += 1
            
    if current_number*current_number == n:
        answer += current_number
    return answer

 

아래는 문제 풀이 영상입니다.

https://youtu.be/9dd8TBquTxk

 

반응형
반응형


안녕하세요 Henry 입니다

오늘은 이진 변환 반복하기 라는 문제를 풀어보았습니다.
프로그래머스에서 Level 별로 문제 난이도가 정해져 있는데,
이 문제는 Level 2에 속해있는 문제입니다.

먼저 이진 변환하는 방법을 알아야 하고,
숫자로 되어있는 문자열에서 0을 제거하는 방법을 알아야 합니다.

저는 문자열을 리스트로 변환해서 문제를 풀었는데,
또 0과 1만 이루어져 있기 때문에, 값을 모두 더하는 것을 1의 개수로 보는 것도 참 좋은 방법일 것 같습니다.

아래는 제가 푼 소스입니다.
코드 보시면서 도움이 되시길 바랍니다ㅎㅎ

from typing import List

def solution(s: str) -> List[int]:
    zero_count_list = list()
    while True:
        ls = list(s)
        zero_count_list.append(sorted(ls).index('1'))
        value = len(ls) - zero_count_list[-1]
        s: str = binary_tranform(value)
        if s == '1':
            break
            
    return [len(zero_count_list), sum(zero_count_list)]



def binary_tranform(value: int) -> str:
    remainder_string = ''
    while True:
        value, remainder = divmod(value, 2)
        remainder_string = str(remainder) + remainder_string
        if value == 0:
            break
    return remainder_string


아래는 문제 풀이 영상입니다.
https://youtu.be/YdVfhz1WSl4

 

- YouTube

 

www.youtube.com

 

반응형
반응형

 

안녕하세요 Henry입니다!

 

오늘은 간단한 사칙연산 중 뺄셈에 대한 풀이를 요구하는 문제를 풀어보았습니다.

 

코드 보시면서 도움이 되시길 바랍니다ㅎㅎ

 

def solution(num1: int, num2: int) -> int:
    return num1 - num2

 

아래는 문제풀이 영상입니다.

https://youtu.be/yBQGiVZeJRs

 

- YouTube

 

www.youtube.com

 

반응형
반응형

 

안녕하세요~!

 

Henry's Algorithm의 헨리입니다.

 

오늘은 자바로 문제를 풀어보았습니다.

 

문제 푸는 요령:

두개의 배열중에 하나만 딱 다를때,

정렬을 한 후에 동등비교를 통해서 문제를 풀 수 있게 됩니다.

 

아래 제가 푼 코드를 올려놓겠습니다.

 

다들 열공하시기 바랍니다.

import java.util.Arrays;

class Solution {
    public String solution(String[] participant, String[] completion) {
        String answer = "";
        
        Arrays.sort(participant);
        Arrays.sort(completion);
        
        for(int i=0; i<completion.length; i++){
            if(!completion[i].equals(participant[i])){
                return participant[i];
            }
        }
        
        answer = participant[participant.length - 1];
        
        return answer;
    }
}
반응형
반응형

 

 

안녕하세요 Henry입니다.

 

오늘은 회사 출근하기 전에 일찍 눈을 뜨게 되서

코딩 문제를 한문제 풀어보았습니다.

 

python의 dictionary라는 자료형은 정말 잘 사용하기만 한다면 

좋은 도구가 될 수 있는 것 같습니다.

 

이 문제를 풀 때에도

dictionary의 key, value 구조를 활용하여서 userid의 이름을 관리해주고,

마지막에key값을 통해 value값에 접근하면서 문제를 해결할 수 있었습니다.

 

다른 사람의 풀이를 보니 모두 비슷한 사고 과정으로 접근한 것 같습니다.

일단 userid에 대한 최종 name을 얻기 위해 for문 1번,

그리고 출력 구문을 생성해주기 위해 for문 1번을 돌아야하는 거는 다들 같은 생각을 한 것 같습니다.

 

아래는 저의 코드입니다.

 

def solution(record):
    answer = []
    records = [row.split(' ') for row in record]
    users: Dict[str, str] = {}
    
    for row in records:
        if row[0] == 'Enter':
            users[row[1]] = row[2]
            answer.append([row[1],'님이 들어왔습니다.'])
        elif row[0] == 'Change':
            users[row[1]] = row[2]
        elif row[0] == 'Leave':
            answer.append([row[1],'님이 나갔습니다.'])
        else:
            raise Exception
    
    
    return [users[i[0]]+i[1] for i in answer]

 

감사합니다.

반응형
반응형

안녕하세요

행복한 개발자 Henry입니다!

 

오늘은 프로그래머스에서 

오로지 코딩실력만으로 여름 인턴십을 선발하는 Summer/Winter Coding 챌린지 중

2018년도에 출제되었던 문제를 풀어보았습니다.

 

이번 문제는 프로그래머스 Level 1에 배정되었던 문제였습니다.

 

소수를 구하는 문제였는데요,

for문 3번을 모두 돌려야 하는 완전 탐색이 불가피했던 문제였고,

그렇게 접근해서 풀었더니 모든 테스트에서 정답을 받을 수 있었습니다.

 

아래는 제가 풀었던 문제의 코드입니다.

저는 따로 is_prime이라는 함수를 만들어 문제를 풀어보았습니다.

def solution(nums):
    prime_cnt = 0

    for first in range(len(nums)):
        for second in range(first+1,len(nums)):
            for third in range(second+1, len(nums)):
                if is_prime(nums[first] + nums[second] + nums[third]):
                    prime_cnt += 1

    return prime_cnt

def is_prime(num: int) -> bool:
    for i in range(2, num//2):
        if num%i == 0:
            return False
    return True

 

그럼 오늘도 좋은 하루 되세요~~!!

반응형

+ Recent posts