
알고리즘 문제풀이를 안했더니 감을 잃어서 다시 풀면서 실력을 쌓고있다.소수와 관련한 문제가 자주 나와서 좀 더 빠르게 소수여부를 확인할 수 없을까 하다가 에라토스테네스의 체를 알게 되었고, 잘 이용하고 있다.우선 0과 1은 소수가 아니므로 제외하고 2 ~ n이라는 숫자

정렬할 줄 아냐는 문제다.문제만 잘 읽으면 python을 쓸 줄 아는 사람이라면 바로 풀이 가능하다.여기서 i와j,k는 컴퓨터에서 계산하는 0부터 시작이 아닌 1부터 시작이니 그 부분만 주의하면 된다.다른 사람은 아래처럼 풀었다.

2022 KAKAO BLIND RECRUITMENT 문제로 일반적인 lv1 문제보단 복잡하긴 하다.내가 풀이를 하면서 중점으로 본 것은 문제를 해결하면서 변수가 꼬이지 않게 하는 것이었다.id_number 대신 index를 사용해서 확인해도 되었으나, 개인적으로 이게

풀이를 하면서 금방 풀 거라 생각했는데 테스트케이스에선 맞았으나, 실제 체첨간에 틀리는 경우가 있었다.아래 테스트 케이스를 추가해서 확인을 해주었다.처음 풀이하면서 크게 3가지 과정을 거쳤다.1\. 유효기간은 개월이므로 수집일자에서 개월 더하기2\. 더한 개월에 맞춰

문자열 대문자, 소문자를 하는데 대문자가 소문자보다 작은 것으로 간주해야하니 아스키코드를 이용해서 해줘봤다.다른 사람들은 더 간단하게 풀었다. 알아둬야겠다. 더 간단히 할 수 있었다니,,,,

제목은 같은 숫자가 싫다고 하지만, 내용을 읽어보면 연속된 같은 숫자가 싫다는 것을 알 수 있다.따라서 숫자가 연속된 것, 예시로 222212332211 이 있으면, 212321 이 되야한다는 것이다.난 이방법을 stack의 방법과 엮어서 생각을 해보았고, 반쪽짜리 s

사진별로 추억 점수를 매기는 문제인데, name, yearning, photo로 이름과 이름과 연결되는 점수, 사진 이 주어진다.이 때 사진에는 name에는 없는 사람들도 있다.여기서 난 인덱스를 이용해서 photo에서 바로 찾아내는 방식을 사용할 수도 있었겠지만, 딕

조건이 3개가 있다.1\. n의 다음 큰 숫자는 n보다 큰 자연수 입니다.2\. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다.3\. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다.몇 가지 방법을 생각해봤지만, 제한

t의 길이는 p보다 크거나 같고, 숫자로 이루어진 문자 t중에서 p와 길이는 같지만 값은 p이하인 수의 갯수를 찾아내야한다.그래서 슬라이싱을 이용해서 문제를 풀어보았다.다른 사람 풀이도 보니 별반 다르지 않다.

def is_pair(s): wt = 0 for c in s : if c == '(' : wt += 1 elif c == ')' : wt -= 1 if wt < 0 : return False return

처음에는 간단하게 title()을 쓸까 했지만 문제에서 숫자 다음은 그냥 소문자로 이어지도록하라 했기에 쓸 수 없었다.그리고 다른 방법으로 capitalize()를 아래처럼 사용해봤다.하지만 위의 방법도 결국 제한 조건에서 '공백문자가 연속해서 나올 수 있습니다.'라는

처음에는 a와 b의 거리 차이로 풀려고 생각을 했어서 아래처럼 풀었다.하지만 이러니 추가 테스트케이스로 8, 4, 5, 1 의 경우에 틀리게 되어서 이 방법은 폐기하였다.그래서 다른 방법을 시도하였다.경기를 몇 번 뛰었는지를 확인하면 되는 것이기에 처음에 대진자와의 짝

한 번 탈 때마다 price 요금을 더 내야하는 이상한 놀이기구이다.얼마나 인기가 많으면 이렇게 배짱장사를 할까...간단하게 풀어진다.1\. 반복문을 돌리면서 count만큼 탔을 때의 비용을 계산한다.2\. 내가 들고 있는 돈과 비용을 계산하고 그에 따른 답을 반환한다

문제가 길어서 그렇지 잘 읽어보면 금방 풀린다.잠깐 시간을 끈 구간이 있느데 해당 구간이 숫자 10과 0을 처리하는 구간이었다.for문을 사용하고 있었는데, 그러니 뭔가 꼬인게 있어서 while문을 사용해서 인덱스에 +1을 더 해줌으로 해결했다.다음처럼 풀었다.1\.

보고나서 머리로는 어떻게 풀어야겠다 생각되었으나, 코드로 어떻게 해야할지 고민이 되었다.우선 생각한대로 풀이는1\. 받은 인원을 무게 내림차순으로 정렬한다.2\. 보트를 타야하는데 남은 사람 중 가장 무거운 사람과 가장 가벼운 사람을 태운다.2-1. 이 때 가장 무거운

문제를 어떻게 해결할까 하다가 일단 큐로 풀어야하는 방법이긴하니까 큐의 방식을 이용해서 front와 rear를 설정해주고 이를 이용해줬다.실행될때, turn_number라는 변수를 이용해 내가 몇 번째 실행됬는지 기록한다.front와 rear를 비교했을 때, 남은 프로

스택/큐 문제라고 되어있지만, 난 그와 다른 방법으로 풀었다. 왜냐하면 큐 방법일 듯 하다는 생각은 들지만, 어떻게 해야 큐 방법으로 끝낼 수 있는지 감이 오지 않았기 때문이다.그래서 다음처럼 계획하고 문제를 풀었다.우선 개발을 모두 마쳤을 때 각 개발마다의 작업일수

최소공배수를 구해야하는 문제이다.다만 2개의 수에서 최소공배수를 구하는 것이 아닌 N개의 수에서 최소공배수를 구해야한다.N개라고 별반 다르지 않으니 최소공배수 공식을 그대로 이용해주었다.1\. 유클리드 호제법을 이용해 최대공약수 함수와 최소공배수 함수를 만들어준다.2\

갈색과 노란색의 2가지 색으로 이루어진 카펫의 크기를 구해야한다.노란색은 실제로 카펫의 세로 2칸, 가로 2칸을 제외한 길이의 곱 면적이고, 갈색은 노란색을 제외한 즉, 테두리 면적이다.이를 이용해서 풀이를 하니 다음과 같다.1\. 전체면적 구하기(갈색+노란색)2\.

처음엔 이렇게 풀었다.그런데 제일 비싼 가격이 2개 이상 있으면 위처럼 안 될 수도 있으니, 아래처럼 풀었다.

간단쓰.

모든 레코드 조회하기 풀이

분명히 맞는데 라고 생각하다가 왜 틀렸는지 겨우 깨달았다.SALES_DATE를 그대로 이용하면 형식이 시분초도 나와서 틀리더라.그래서 SELECT SALES_DATE가 아닌 아래 처럼 사용해주었다.그리고 2개의 온라인 판매, 오프라인 판매의 데이터를 합쳐야했기에 UNI

프로그래밍 입문자를 위한 쉬운 수준이라고 하지만 평균 점수가 44.4여서 쫄고있었는데, 다행히 아주 손쉽게는 아니고 잠깐 버벅거렸지만, 금방 풀고, 100점으로 통과해따리. 신난다리.더 많이 공부하고, 프로그래밍 초급자를 위한 기초 수준이라는 레벨 2도 합격해야지\~~

어려운 문제는 아니다. 반복문만 쓸 줄 알면 바로 풀 수 있다.1\. 우선 board가 주어지므로 이를 활용한다. 또한 board와 boardn의 길이는 같음을 인지.2\. 문제에서 적힌대로만 풀어도 문제 없지만, 난 내 방식대로 dr, dc를 만들어서 상하좌우로 돌아

문제를 풀었는데 푼 방식은 맞았지만, ext까지 고려해야하는 것을 잊어서, 2번인가 완전실패했다. 왜 안되지 하고 다시 읽었더니 ext를 사용해야하는 코드를 작성안했다.아래처럼 풀었다.1\. data를 for문을 돌려서 그 안에 있는 값들 중 ext의 val_ext에

주어진 문자열이 '1'이 될 때까지 이진 변환을 반복하면서 반복횟수와 함께 지운 0의 개수를 반환해야하는 문제이다.반복을 몇 번 해야하는지 모르므로 while문을 이용했다.제거한 0의 갯수를 입력한 변수 생성 및 while문 생성while문 안에서 count('0')를

처음에는 재귀로 풀려고했다가 너무 많은 재귀로 실패해서, 이후엔 어떻게 풀어야하는지 감도 안잡혔다.찾아보니 BFS나 DP로 풀어야한다고 했다.너무 오랜만에 만지는 BFS라 감을 잃었지만 다시 시도 해봤다.우선 다음처럼 풀었다.1\. visited를 생성2\. queue

이름이 있는 동물의 아이디 풀이

COALESCE()를 이용해 NULL이면 No name을 입력시켰다.

아래 방법도 가능하다.나이 정보가 없으면 1, 나이 정보가 있으면 0으로 해놓고, 그 모든 값을 SUM()시켜서 출력시킨다.

역순 정렬하기 풀이

아픈 동물 찾기 풀이

어린 동물 찾기 풀이

동물의 아이디와 이름 풀이

여러 기준으로 정렬하기 풀이

상위 n개 레코드 풀이

조건에 맞는 회원수 풀이

처음엔 어떻게 하지 인덱스를 다 돌리면서 확인을 해야하는건가 아니면 완전탐색을 이용해야하는 건가 그런 생각을 하다가, 수학적 접근을 했다.최솟값을 만들어야 하는데 최댓값이 나오는 제일 먼저는 A의 제일 큰 수와 B의 제일 큰 수를 곱하고, 그 다음의 큰 수와 그 다음의

파일이 인덱스와 인덱스 사이에 있으므로 이 부분에 대해서만 확인 하면 문제가 생기진 않을 듯하다.좌상에서 우하로 드래그를 하도록 한다 가정하자.파일또한 각 정확한 인덱스에 있다고하면, 우하의 위치만 각 +1, +1 해주면 문제가 없다.이를 바탕으로 가장 위, 가장 왼쪽

머리가 꼬인 상태여서 어떻게 풀어야지 하다가, 몇 번 틀리고 맞췄다.sorted()를 이용해줬다.더 좋은 방법이 있을 것이라 생각했는데, 다른 살마 풀이를 보니 좋은 풀이가 있었다.우선 명예의 전당이 안찼을때, 찼을때로 나눠주고, 찼을 때도, min(honor)의 값이

처음엔 위 문제를 보고 간단하게 a0,a1 = a1, a0 을 사용하면 되겠다 하고 아래 처럼 풀었다.그런데 시간초과가 발생했다....그래서 다른 방법을 찾았다.딕셔너리에 값을 저장 시키는 방법이다.하나로는 내 머리에서 도저히 방법이 안나와서 2개의 딕셔너리를 사용했다

문제의 상위 지문을 잘 못 이해하고 있어서 시간이 조금 걸렸다.그것만 아니였다면 금방 풀었다.빈 병을 주면 그것으로 총 몇 개의 콜라로 바꿔먹을 수 있냐를 제시한 문제이다.모든 받은 콜라의 갯수를 기록한 변수를 지정.while문을 돌면서 빈 병을 바꿀 수 있는 갯수로

for 문과 while문을 사용했다.1\. 우선 자기자신인 방법이 있으니 answer = 1로 등록2\. for 문으로 1, n//2 까지 확인 하기 n//2 + 1 이후로는 값을 더하게 되면 n을 넘어버리니까3\. while 문에서 sum_v == n이 되면 answ

재귀함수를 이용해줬다.사실 예전에 자력으로 풀었었는데, 지금은 어떻게 풀어야하는지 잊어버려서 골골대다가 예전에 풀었던 것을 참고해서 풀었다.많이 풀고 또 많이 풀고 또 많이 풀어서 예전 보다 더 좋은 실력을 가져야지.우선 프로그래머스는 함수형으로 문제를 풀어야되기 때문

처음방법으로 풀었을 때, 잘 넘어갔지만, 효율성에서 문제가 생겼었다.그래서 보다보니 내가 사용하기 위해 phone_book 이미 정렬을 해둔게 있다.정렬을 해뒀다면, 이를 더 잘 이용해먹어야지.정말로 잘 정렬된 문자열 리스트라면 내가 120 이라면, 내 뒤에는 1201

처음엔 모든 경우의 수를 구하기 위해, 재귀함수를 이용해 모든 옷을 입을 수 있는 방법을 구하도록 하였다.방법에는 문제가 없는 것으로 보이나, 시간이 너무 오래걸리게 되어 실패했다.그래서 아래 처럼 다른 풀이 방법으로 풀게 되었다.경우의 수를 그대로 이용해서, 모든 옷

처음엔 모든 경우의 수를 구하기 위해, 재귀함수를 이용해 모든 옷을 입을 수 있는 방법을 구하도록 하였다.방법에는 문제가 없는 것으로 보이나, 시간이 너무 오래걸리게 되어 실패했다.그래서 아래 처럼 다른 풀이 방법으로 풀게 되었다.경우의 수를 그대로 이용해서, 모든 옷

처음엔 재귀함수로 시도해봤으나, 시간도 오래걸리고, maximum deepth 에러가 생겨서 실패했다.그래서 while문을 이용해봤고 아래처럼 진행을 했다.1\. F=0,1,2 변수를 생성2\. n = 2일 때는 1을 반환시키고 이게 아니라면, while문에 입장3\

처음엔 재귀로 했으나, 이번에도 maximum에 걸렸다.dp를 이용했다.현재 칸의 경우의 수는 1칸 전과 2칸 전의 경우의 수를 합친 것과 같다는 것에 기인했다.그러니 아래처럼 코드가 나왔따.다들 비슷비슷하게 풀었다.

처음에는 .replace의 방법으로 풀었는데 너무 시간이 오래걸렸다.도저히 무슨 방법을 써야하지 답이 생각이 안났는데, stack 방법을 찾게 되어서, stack을 이용해서 새로 풀었다.효율성 검사에서 시간이 걸려, 조마조마했지만 다행스럽게 통과되었다.stack을 이용

처음에 어 쉽네 했는데 멍청하게 풀어서 실패했다.그리고 다음은 이렇게 해야지! 하고 풀었는데 계속 실패했다. 왜지왜지왜지 하다가 보니까부분을로 적어놨다.하필 테스트케이스가 다 통과되는 바람에 제대로 찾지를 못했다. 그래도 코드를 천천히 보면서 직접 해결할 수 있어서 다

귤이 많은 갯수를 구하면 쉽게 풀릴 것이라 생각해서, 아래처럼 풀이를 해봤다.딕셔너리 대신 리스트를 이용해서 풀어보았고, 제출했을 때, 꽤나 시간이 오래 걸려서 실패하나 싶었지만, 아슬하게 통과를 했다.collection.Counter를 이용해서 각 크기마다의 갯수를

DFS 방법을 이용했다.visited를 설정해주고, 이를 활용한 재귀로 문제를 해결했다.또한, dungeons를 받은 그대로가 아닌 최소 필요 피로도를 기준으로 내림차순으로 정렬한 후, 진행하도록 하였다.내가 풀었던 방법과 같은 dfs방식을 이용했다.cnt라는 변수를

시간초과는 나지 않을까 어떻게 풀까 하다가 이중 for문에 for-else문을 사용하기로 했다.첫번째 for문에서 discount를 10일간격으로 확인할 수 있게 함두번째 for문에서 행사 첫째날부터 마지막날까지의 행사 품목과 구매 갯수를 입력시킴이를 3번째 for문에

문제에서 당연히 zero division이 없을 줄 알았는데, zero division의 경우도 고려해야해서 한 번 실패했다.코드를 몇 번 수정하다가 도전한건데 쓰읍 아쉽다.풀이방법은 내가 했던 방법보다 훨씬 간단하다.denominator를 이용해서 도달한 사람 수를

문제보고 어,,,, 하다가 문제대로 풀면 되겠지하고, 규칙을 정하고 풀었다.1\. 두 사람이 주고 받은 게 있을 때, 선물 수가 다른 경우2\. 두 사람이 주고 받은 게 있을 때, 선물 수가 같은 경우3\. 두 사람이 주고 받은 게 없을 때, 선물 수가 다른 경우4\.

문제가 길어서 잠깐 어,, 했지만 그래도 풀 수 있게다는 생각은 확실히 들었다.그래서 아래처럼 풀었다.1\. 타입을 설정하는 리스트 생성2\. 해당 타입에 대한 점수를 기록한 리스트 생성3\. for 문을 통해 choices에서 점수를 기록4\. 심리 검사 완료 후 데

문제가 길긴 했지만 몇 가지만 주의 하면 되는 문제이다.결국은 if else문을 잘 쓸줄 아느냐 행렬을 사용할 줄 아느냐에 대한 문제이다.각 기본 사항에 대해서 입력시작 위치를 설정시작 위치를 기반으로 행렬작동행렬 작동간 로봇 강아지가 입력 거부 안하고 진행할 경우에만

보면서 진짜 이건 어떻게 풀지 하고 있다가, 보니, 뭘해도 결국 1개만 있는 것은 나와야했다.이를 바탕으로 풀이를 해보려고 진행했다.일단 문자열 형태로 되어있어서, 이것을 리스트 형태로 바꿔줄 필요가 있었기에 이를 조정했다.1\. 문자열을 리스트 형태로 변환2\. 생성

처음 문제를 보고 나서 느낀 점은 이거 문제로 받았으면, 제 시간 안에 풀 수 있었을까? 였다.문제를 읽는 것과 정리하는 시간도 필요했고, 그에 따른 고민도 해야했기 때문이다. 다행히 LV1이어서 적당하게 이렇게 하면 요롷게 되겠지 하고 푸니 풀렸지만, 그 이상 레벨이

처음에 일단 부딪히는 방법으로 풀어서 아래처럼 풀었다.풀리기는 하지만, 시간 초과가 나는 단점이 있었다.그래서 어떻게 해야 시간을 조금이나마 줄일 수 있을까 해서 하다가stack을 이용한 방법으로 풀어보자 생각했다.그래서 아래처럼 풀었다.stack을 쓰면서 시간을 조금

풀었는데 계속 해서 무슨 문제가 있어서 틀렸습니다. 가 나오는지 몰라서 이것저것 해보다가를 넣어보니 3이 아닌 2가 나오는 것을 보고, 아... round에서 문제가 생겼구나 싶어서 round함수를 내 입맛에 맞게 바꿔주고 아래처럼 풀었다.이렇게 하니 해결되었다.내 코

우째풀지 계속하다가 풀었다.근데 하나가 계속 틀려서 보니 질문하기에서 테스트 케이스 한개를 던져줘서 다행히 풀었다.0,0,0 이면 "0" 이 나와야하는데 아무래도 "000"을 출력해서 그런가보다.그래서 모든 숫자가 0일 때 0을 반환하게 해주었다.오 나랑 똑같은 풀이다

푸는 것은 어떻게 풀면되겠다는 생각은 들었지만, 맨 끝 인덱스에서 다음 인덱스로 넘어가는 과정에 대해서 고민하는데 시간이 오래 걸렸다.아래의 코드를 추가하려고 머리를 잠깐 굴렸기 때문이다. 이게 맞나?? 하고 말이다.for 문을 2개를 사용하면서 슬라이싱과 같이 사용했

사실 어떻게 풀어야하는지 도저히 감이 안와서 결국 남의 힘을 빌렸다.처음에는 일단 행렬을 만들고 dfs나 bfs로 풀어야한다는 것은 알았지만, 구현을 어떻게 해야하는지 답이 안나와서 힘을 빌려 아래처럼 제출했다.

재귀로 풀어야된다는 것도 알고 있었고, 이전 홀수나 짝수에 쓰였던 값이 다음 홀수, 짝수 값에서 재사용된 다는 것도 알고 있었지만, 어떻게 구현을 해야하는지 계속 골골대다가 결국은 힌트를 보고 풀었다.아직 내 머리는 이런 알고리즘들을 제대로 구현해내는 것이 불가능한가.
방금 PCCE 시험을 치고 왔다.기출문제랑 모의고사에선 음. 이정도면 당연히 lv4는 그냥 맞겠군 했는데,,,,직접 맞닥드리니 아니었다.우선 캠으로 하다보니, 중간에 뭐가 문제였는진 몰라도 화면 공유와 캠이 제대로 작동을 안해서, 그것 재설정 한다고 시간이 몇 분 빼먹

문제가 무슨 아무 설명도 없어서 뭐 어떻게 풀라고 하다가, 질문하기에 있는 내용을 보고 행렬의 곱셈이라는 수학 공식이 있음을 알고 풀었다.lv2로 오고 나서는 내 머리가 지끈 거린다. 단순 머리로만은 못풀고 이젠, 손도 같이 써서 작업을 해야할 듯 하다.arr1의 길이

업로드중..처음 이 문제를 보곤 음... 재귀로 풀면 풀릴듯? 하고 아래처럼 풀었다.그래서 문제를 재귀로 풀면서 2가지로 나누는 구간을 생성하고 나눠줬다.이런 함수 깊이 문제로 재귀로는 풀수가 없었다.만약 된다해도 시간문제가 있지 않았을까 싶기도 하다.그러다가 어...

문제를 이해한 줄 알았는데, 문제를 제대로 이해하지 못하고 있었다.처음에는 아래 처럼 풀었다.처음에는로 생각하고 풀었다. 그런데 그게 아니라고 한다.질문하기에서 알려준 내용을 보니 이런 내용이라고 한다.gpt에게 물어보니 아래처럼 답해준다.h-index는 연구자의 연구

문제를 보고 중복으로 지나온 길은 하나로 치고, 지나온 길이의 전체길이를 구하는 것이니, set()을 이용해먹자고 생각하고 아래처럼 풀이를 진행했다.움직임을 나타내기 위해 dx와 dy를 이용해 표현해 주었으며, 이를 이용해 커맨드에 따라 좌표가 움직이게 해주었다.일단

문제를 보고 큐와 같이 스택으로 풀어야겠다라고 생각을 했다.그래서 메인 컨테이너와 보조 컨테이너로 생성하고, 메인 컨테이너에서 꺼내서, 보조컨테이너와 같이 비교하는 방법을 사용했다.그것이 아래 코드이다.이렇게 하니 풀리긴 풀리는데 시간이 너무 오래 걸려서 시간 초과가

처음에는 기울기를 이용하면 되겠다 생각하고 풀었다.그래서 격자 1당 사용해야하는 대각선을 생각하고 추가로 풀었더니 아래처럼 풀면 되겠다라는 생각에 아래처럼 풀었다.하지만 이것은 나의 착각이었다.테스트의 반정도는 틀렸기 때문이다.우야노 하다가 보니 최대공약수를 이용해야한

완전탐색문제이고, 문제를 보니 재귀로 풀어도 깊이 문제가 생기지 않을 것이라고 확신했기에 재귀로 풀었다.따라서 for 문을 사용한 재귀를 사용하였고, 프로그래머스 문제의 특성상 global을 많이 사용하게 되어 머리가 잠시 삐로롱 되었지만, 금방 풀 수있었다.초기에 필

개발자가 되겠다고 공부한지 1년이 되어간다. 아직 혼자서 우당탕탕 중이고, 작년 동안 공부를 하면서 써먹었던 알고리즘과 프로젝트를 다루는 숙련도(?)가 지금은 프로젝트 하고 있을 때에 비해 많이 약해졌다고 느껴서 알고리즘 공부를 다시 했다.그러다 프로그래머스를 알게 되

풀이르 하면서 음 어떻게 푸는지 바로 감이 왔다.바로 visited와 함수를 생성하고, 풀이를 진행했다.그런데 문제가 생겼는데 보니 프로그래머스의 방식이 함수 안에 함수인 중첩함수로 사용하다 보니, nonlocal이 필요했다.그런 연유로 다음과 같은 코드를 생성할 수