티스토리 뷰

한화시스템 BEYOND SW 캠프 9기 32일차
2024.08.01_목

 

여전히 계속 JAVA 알고리즘과 자료 구조 배우고 있다!!

Java가 아직 익숙하지 않아서 그런지

바로바로 이해는 되지 않는다 ㅠㅠㅠ 그래도 최대한 열심히 따라가보자!


 

어제는 창욱이가 카카오 인턴십 문제를 줘서 집 가자마자 풀어봤다.

 

문제 엄청 길다;;;;

 

Coding Test Practice > 2019 카카오 개발자 겨울 인턴십 > 크레인 인형뽑기 게임

https://school.programmers.co.kr/learn/courses/30/lessons/64061

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

크레인 인형뽑기 게임

'''
초기 인형 배열
[0,0,0,0,0],
[0,0,1,0,3],
[0,2,5,0,1],
[4,2,4,4,2],
[3,5,1,3,1]
'''

def solution(board, moves):
    answer = 0
    board_dict = dict()
    stack = []          # 뽑은 인형을 담을 공간
    
    # 딕셔너리로 인형 배열을 넣었다.
    for i in range(1, len(board)+1):
        board_dict[i] = board[i-1]
    
    # moves로 인형 꺼내기
    for i in range(len(moves)):
        for l in board:
            if l[moves[i] - 1] == 0:
                continue
            else:
                stack.append(l[moves[i] - 1])
                l[moves[i] - 1] = 0
                break
    
    # stack에서 겹치는 값 지우기
    cnt = 0     # 없어지는 인형 개수
    i = 0
    while i < len(stack) - 1:   # len(stack)이었으면 끝까지 검색하므로 Out of range 나옴
        if stack[i] == stack[i + 1]:
            stack.pop(i)
            stack.pop(i)
            cnt += 2
            i = 0           # 다시 처음부터 시작하기 위해
        else:
            i += 1
        
    return cnt

 

 

이건 오늘 푼 문제!!

Coding Test Practice > 2020 카카오 인턴십 > 키패드 누르기

https://school.programmers.co.kr/learn/courses/30/lessons/67256

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

키패드 누르기

def solution(numbers, hand):
    answer = ''
    left_hand = [3, 0]     # 처음 왼손의 위치 / 진행하면서 바꾼다.
    right_hand = [3, 2]    # 처음 오른손의 위치 / 진행하면서 바꾼다.
    
    phone = {1:[0, 0], 2:[0, 1], 3:[0, 2], 4:[1, 0], 5:[1, 1],
             6:[1, 2], 7:[2, 0], 8:[2, 1], 9:[2, 2], 0:[3, 1]}

    for i in numbers:
        if i in (1, 4, 7):
            answer += 'L'
            left_hand = phone[i]    # 왼손의 좌표 갱신
        elif i in (3, 6, 9):
            answer += 'R'
            right_hand = phone[i]   # 오른손의 좌표 갱신
        elif i in (2, 5, 8, 0):
            
            # 왼손, 오른손 거리가 같지 않다면(1. 왼손이 가깝냐? 2. 오른손이 가깝냐? 3. 둘이 똑같냐?)
            # 1. 왼손이 더 가까우면
            if abs(phone[i][0] - left_hand[0]) + abs(phone[i][1] - left_hand[1]) < abs(phone[i][0] - right_hand[0]) + abs(phone[i][1] - right_hand[1]):
                answer += 'L'
                left_hand = phone[i]
                
            # 2. 오른손이 더 가까우면
            elif abs(phone[i][0] - left_hand[0]) + abs(phone[i][1] - left_hand[1]) > abs(phone[i][0] - right_hand[0]) + abs(phone[i][1] - right_hand[1]):
                answer += 'R'
                right_hand = phone[i]
                
            # 3. 둘 다 같은 거리면
            else:
                
                # 오른손잡이 경우
                if hand == "right":
                    answer += 'R'
                    right_hand = phone[i]
                    
                # 왼손잡이 경우
                else:
                    answer += 'L'
                    left_hand = phone[i]
                
    return answer

 

 

이것도 오늘 푼 문제!!!!

우선 풀어봐!!!!! 그리고 코드 줄일 수 있으면 나중에 생각해보면서 줄여보자!!ㅋㅋㅋㅋ

이러면서 풀었다.

그리고 다 풀고 창욱이가 푼 방식도 보니 확실히 깔끔하게 잘 푼 것 같다.

 

제일 중요한 건 내가 어떤 생각을 가지고 풀었는지가 중요하다!!

내가 어떤 로직을 가지고 풀었는지!!

그 로직과 생각을 점점 발전시켜 나가야한다!

 

Coding Test Practice > 2022 KAKAO TECH INTERNSHIP > 성격 유형 검사하기

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

성격 유형 검사하기

def solution(survey, choices):
    answer = ''
    
    # 각 지표
    first = {"R": 0, "T": 0}
    second = {"C": 0, "F": 0}
    third = {"J": 0, "M": 0}
    four = {"A": 0, "N": 0}
    
    # 검사
    for i in range(len(survey)):
        
        if survey[i] in ("AN", "NA"):
            if choices[i] > 4:
                four[survey[i][1]] += choices[i] % 4
            else:
                four[survey[i][0]] += 4 - choices[i]
                
        elif survey[i] in ("CF", "FC"):
            if choices[i] > 4:
                second[survey[i][1]] += choices[i] % 4
            else:
                second[survey[i][0]] += 4 - choices[i]
                
        elif survey[i] in ("JM", "MJ"):
            if choices[i] > 4:
                third[survey[i][1]] += choices[i] % 4
            else:
                third[survey[i][0]] += 4 - choices[i]
                
        else:
            if choices[i] > 4:
                first[survey[i][1]] += choices[i] % 4
            else:
                first[survey[i][0]] += 4 - choices[i]
                
    # 결과
    if first["R"] < first["T"]:
        answer += "T"
    else:
        answer += "R"
        
    if second["C"] < second["F"]:
        answer += "F"
    else:
        answer += "C"
        
    if third["J"] < third["M"]:
        answer += "M"
    else:
        answer += "J"
        
    if four["A"] < four["N"]:
        answer += "N"
    else:
        answer += "A"
        
    return answer

 


 

저녁(18:30-21:30)에는 비즈니스 특강이 있어서 듣게 되었다.

 

주제는 비즈니스 기획 프로세스와 사업화!

 

기획은 설득이다.

 

기획서를 나를 위해 작성하지 말고 고객, 상사 등을 위해 작성하자!!

 

미래의 언젠간 사업을 하고 싶고 하기 위해 비즈니스 기획과 모델을 어떻게 해야할지 많이 배운 것 같다.

 

이걸 토대로 점점 살을 붙여나가고 나만의 기획과 모델을 정형화하는 것이 중요해 보인다.

 

그치만 결국 제일 중요한 건....

 

아이디어!!!!

 

배민이든 에어비엔비든 플랫폼을 만드는 건 쉽다.

 

하지만 그런 아이디어를 생각해낸다는 것이 어렵다.

 

아이디어는 주변에도 있을 수 있으니 쉽게쉽게 생각하고 사소한 것도 생각하면서 아이디어를 내고

 

그 아이디어를 가지고 기획과 모델링을 하는 것이 중요하다!!

 

맨 처음에는 특강이 어려웠는데

 

듣다보니 먼 훗날에 나에게 혹은 곧 나에게 도움이 될만한 내용이라고 생각하니

열심히 들었다 ㅋㅋㅋㅋㅋ

 

앞으로도 파이팅 해보자!!

 

파이팅!!!!!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함