본문 바로가기

~2023/프로그래머스

프로그래머스 '완주하지 못한 선수' 문제풀이(JAVA) - Henry's Algorithm 안녕하세요~! 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 더보기
프로그래머스 [2019 카카오 블라인드 채용] 오픈채팅방 - Henry's Algorithm 안녕하세요 Henry입니다. 오늘은 회사 출근하기 전에 일찍 눈을 뜨게 되서 코딩 문제를 한문제 풀어보았습니다. python의 dictionary라는 자료형은 정말 잘 사용하기만 한다면 좋은 도구가 될 수 있는 것 같습니다. 이 문제를 풀 때에도 dictionary의 key, value 구조를 활용하여서 userid의 이름을 관리해주고, 마지막에key값을 통해 value값에 접근하면서 문제를 해결할 수 있었습니다. 다른 사람의 풀이를 보니 모두 비슷한 사고 과정으로 접근한 것 같습니다. 일단 userid에 대한 최종 name을 얻기 위해 for문 1번, 그리고 출력 구문을 생성해주기 위해 for문 1번을 돌아야하는 거는 다들 같은 생각을 한 것 같습니다. 아래는 저의 코드입니다. def solution(.. 더보기
프로그래머스 [2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어 - Henry's Algorithm 안녕하세요 알고리즘 공부하는 Henry입니다. 오늘은 일요일 저녁 인데요, 저는 집 근처 투썸에 나와서 코딩 문제를 한 문제 풀어보았습니다. 요즘 제가 정보보안기사 시험을 준비하고 있어서, 기사시험 준비하다가 중간 중간에 쉴 겸, 프로그래머스 Level 1짜리 코딩 문제를 풀어보았습니다. 오늘 제가 푼 문제는 2021년도 카카오 채용연계형 인턴십에서 출제된 숫자 문자열과 영단어라는 문제입니다. Python의 딕셔너리를 활용해서 풀면 쉽게 풀리는 문제였습니다. 아래는 제가 문제를 푼 코드인데, 한번 100점을 받게 되서, 뿌듯했습니다. 비록 Level 1의 쉬운 문제이지만, 이렇게 꾸준히 공부하다보면 사고력도 좋아지고, 나중에 반드시 도움이 될 것 이라 생각합니다. def solution(s): answe.. 더보기
프로그래머스 '[카카오 인턴] 키패드 누르기 문제풀이 - Henry's Algorithm 안녕하세요~ 개발자 Henry입니다! 오늘은 날씨가 무지 더웠던 하루였는데요, 이런 날씨에는 집에서 시원한 에어컨 바람에 코딩 문제를 풀며 시간을 보내는 게 좋은 것 같습니다ㅎㅎ 오늘 제가 풀어본 문제는 프로그래머스에서 카카오 인턴 코딩테스트용으로 나왔던 문제입니다. 이름하여, 키패드 누르기! 문제는 다음과 같습니다. 더보기 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거.. 더보기
프로그래머스 '폰켓몬' 문제풀이 - Henry's Algorithm 안녕하세요~! 알고리즘을 공부하는 개발자 Henry입니다~ 오늘은 프로그래머스의 폰켓몬이라는 문제를 풀어보았습니다. 프로그래머스의 Level 1에 있는 비교적 난이도가 낮은 문제입니다! 저의 코드입니다! def solution(nums): answer = 0 _len = len(nums) distinct_len = len(set(nums)) if distinct_len >= _len//2: return _len//2 else: return distinct_len return answer 문제가 매우 길어서 생각보다 까다롭지 않을까 걱정했었는데, 막상 풀어보니 의외로 몇줄 안에 끝나는 문제였습니다! 한번에 문제를 맞출 수 있어서 감사했습니다. 다중 for문으로 접근해야하나 싶었는데, 문제를 제대로 읽어보니.. 더보기
프로그래머스 '신규 아이디 추천' 문제풀이 - Henry's Algorithm 안녕하세요~~!!ㅎㅎ 알고리즘을 공부하는 개발자 Henry입니다! 오늘은 프로그래머스의 "신규 아이디 추천" 이라는 문제를 풀어보았습니다! 2021 카카오 블라인드 채용 코딩테스트에 출제되었던 문제인데요, 카카오 치고는 쉬운 난이도여서 모두 어려움 없이 푸실 수 있었을 것 같습니다! 아래는 제가 문제를 푼 코드입니다. def solution(new_id): import re answer = '' new_id = new_id.lower() # 1 단계 new_id = re.sub(r"[^a-z0-9-_.]","",new_id) # 2 단계 while new_id.replace("..",".") != new_id: new_id = new_id.replace("..",".") # 3 단계 # 4 단계 whil.. 더보기
프로그래머스 'N으로 표현' 문제풀이 - Henry's Algorithm 안녕하세요 알고리즘을 좋아하는 개발자 Henry입니다!ㅎㅎ 최근에 회사를 다니면서 바쁘고 피곤해서 코딩 문제를 못풀었었는데, 다시 조금씩 풀어보려고 키보드를 잡았습니다! 오늘은 프로그래머스에서 동적계획법을 사용해서 푸는 문제를 풀어보았습니다. N으로 표현이라는 문제를 처음 접했을 때, 아래와 같이 풀었습니다. def solution(N, number): answer = 0 li = [] dynamic(N,N,number, li, 1) return min(li) if len(li) != 0 else -1 def dynamic(N, cur, number, li, cnt): if cnt > 8: return if number == cur: li.append(cnt) return dynamic(N, int(st.. 더보기
프로그래머스 '문자열 압축' 문제풀이 - Henry's Algorithm 안녕하세요~~ 알고리즘을 공부하는 개발자 Henry입니다ㅎㅎ 오늘도 21년 신년을 맞이하여 프로그래머스 문제를 한번 풀어보았습니다. 오늘은 문자열을 파싱하여 푸는 문제인데요, 문제는 아래와 같습니다. 문제 설명 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 aabbaccc의 경우 2a2ba3c(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은.. 더보기