본문 바로가기

프로그래밍/알고리즘126

프로그래머스 알고리즘 문제 해설 파이썬 0. 프로그래머스 알고리즘 문제 해설 강의 알고리즘 문제 해설 프로그래머스의 모의테스트는 프로그래머스의 시스템에 익숙해지기 위한 테스트이며, 문제 자체는 2018 1ST KAKAO BLIND RECRUITMENT와 전혀 관계없습니다. 다만 모의테스트의 풀이에 대한 요청이 있어 school.programmers.co.kr 알고리즘 강의가 있어서 수강했다 해결코드를 파이썬으로 제공하지 않아서 아쉽지만 문제를 이해하고 해결하는 것에 집중을 하면서 수강했다 1. 자릿수 더하기 풀이 방법 1의 자리를 구하기 1의 자리를 제거하고 나머지 숫자들을 오른쪼으로 한칸씩 이동 이동시킬 숫자가 없을때까지 반복 해결코드 def solution(n): answer = 0 while n: answer = answer+ n%10 .. 2023. 3. 9.
알고리즘 요약 부루트 포스 완전 탐색 알고리즘 - 풀이 방법 1. for /while 루프를 사용 2. 재귀함수(조금 더 복잡한 문제에서 사용) - 추천문제 프로그래머스 소수찾기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 모의고사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS BFS 깊이 너비 우선탐색 알고리즘 - 정의 1. 드라마 볼 때 하나를 몰아본다 == dfs 2. 여러개를 하나씩 본다 =.. 2023. 3. 8.
프로그래머스 과일장수 파이썬 문제 설명 문제 풀이 def solution(k, m, score): answer = 0 score.sort(reverse=True) for i in range(len(score) // m): answer += score[i * m + m - 1] * m return answer 먼저 내림차순으로 해서 정렬 후 m개를 고르는 방법을 사용했다 규칙성을 찾으려고 했고 len(score)//m만큼 루프를 돌면서 그룹 최하위 점수(score[i * m + m - 1])를 리턴한다 뜬금인데 코드 내에서 k를 안써서 k를 활용할 방법이 있나? 고민해보았다 타인의 숏코드 def solution(k, m, score): return sum(sorted(score)[len(score)%m::m])*m 2023. 3. 6.
프로그래머스 - 전화번호 목록 파이썬 문제 코드 def solution(phoneBook): phoneBook = sorted(phoneBook) for phone1, phone2 in zip(phoneBook, phoneBook[1:]): if phone2.startswith(phone1): return False return True 어떤 번호가 접두어인지 파악하기 위해 오름차순으로 정렬했다(sorted) zip함수를 사용해서 각 요소를 모아주는 역할을 수행햇다 ##zip 함수의 사용법 print(list(zip([1,1,9), [9,7,6], [1,1,9]))) 결과: [[1,9,1],[1,7,1],[9,6,9]] startwith를 쓰면 어떤 것으로 시작하는지를 파악할 수 있다, 맞으면 true, 아니면 false를 반환한다 2023. 3. 2.
알고리즘 풀이 꿀팁 어제 알고리즘 스터디를 하면서 잘하는 사람들에게 알고리즘 잘하는 법에 대해 조언을 받았다 잘하는 법 1. 의사 코드 작성을 꼭 하자 - 문제 요약 간단하게 문제가 어떤 내용인지, 어떤 것을 구하라고 하는지를 정리하기 - 문제 풀이 순서 정리 코드를 모두 작성하지 않더라도 1,2,3.... 을 입력하면서 순서대로 어떻게 코드를 작성할지 고민하기 꿀팁 1. 주석달기 # 1. 입력 받기 # 2. 이동 계획서 따라 더하고 빼기 항상 주석을 이렇게 작성해서 매 줄 '#'을 작성해야 하는 어려움이 있었는데 """주석 # 1. 입력 받기 # 2. 이동 계획서 따라 더하고 빼기 """ """ or '''으로 하고 안에다가 주석을 입력하면 매번 입력하지 않아도 되어서 주석달기 쉽다(코드 에디터 안에서) 2023. 2. 22.
프로그래머스 - 암호해독 파이썬 풀이 def solution(cipher, code): answer = '' for i in range(0, len(cipher)): if (i + 1) % code == 0: answer += cipher[i] return answer 코드에서 'i % code == 0'가 아니라 아래와 같이 작성한 이유가 있다 (i + 1) % code == 0 이렇게 작성한 이유는 문자열 인덱스 'i'는 0부터 시작하지만 문제에서는 code의 배수 번째 글자라고 명시하고 있으므로 문자열 인덱스의 시작을 1로 해야 한다 파이썬에서는 리스트나 문자열의 인덱스는 0부터 시작하므로 2번째 문자는 인덱스 1, 네번째는 인덱스 3....이다 코드에서는 문자열 인덱스를 1부터 시작하는 것으로 처리해야한다 문제 2023. 2. 20.
chatGPT 활용하여 알고리즘 풀이 후기 1. 문제 풀이 chatGPT를 활용해서 알고리즘을 풀이하고 공부도 할 수 있다 ChatGPT: Optimizing Language Models for Dialogue We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is openai.com 위의 홈페이지에서 들어가서 구글 로그인하고, 궁금한 것을 질문한다 영어.. 2023. 2. 16.
프로그래머스 - 체육복 파이썬 풀이 코드 #의사코드 #새로운 배열을 만들어서 [1]이라고 가정 #lost에 들어가면 -=1을 하고 #reserve에 있으면 +=1을 함 #반복문을 돌려서 값이 2인 이상인 i를 기준으로 양 옆을 비교, 없으면 나눠줌 #반복문 들려서 값을 더하고 최종 리턴 def solution(n, lost, reserve): answer = [1]*(n+2) cnt = 0 for i in range(1, n+1): if i in lost: answer[i] -= 1 if i in reserve: answer[i] += 1 for i in range(1, n+1): if answer[i] ==2: if answer[i-1] == 0: answer[i] -= 1 answer[i-1] += 1 elif answer[i+1.. 2023. 2. 15.
컴공생들과 함께하는 알고리즘 스터디 후기 요즘 매주 1일(화요일) 알고리즘 오프라인 스터디를 진행하고 있다 이번주부터 본격적인 시작으로 만나서 '이것이 코딩테스트다'의 처음인 그리디 부분을 풀었다 스터디 방식 0. 만나서 간단히 아이스브레이킹(한 주 어떻게 지내왔는지 공유) 1. 먼저 다 풀어오고 코드를 단체 깃헙에 커밋해오기 2. 만나서는 순서를 정해서 그 사람의 코드를 base code로 다 같이 풀이 방법 공유 (순번에 해당하는 사람이 설명하고, 나머지 사람은 풀이가 다를 경우 말하는 방식) 3. 만나서 다른 같이 풀어보면 좋을 문제를 즉석에서 공유하고 함께 풀이(백준, 프로그래머스의 문제) 느낀 점 1. 다들 전공성적이 높은 컴공전공 학부생 + 비전공인 나로 구성되어 있어 굉장히 수준이 높다(전공생분들 덕분) 2. 다들 풀이 전에 의사코.. 2023. 2. 14.