본문 바로가기

개발

(99)
[이코테] 모험가 길드 내가 푼 코드 참고하여 고친 코드 기존의 내 코드는 뭐가 문제였을까?? 요즘 내가 푸는 문제들이 다른 블로그들과 좀 다르게 푼다고 느끼고 있다. 그것을 곰곰히 생각해 본 결과, 내가 짠 코드는 대충 짜서 효율성이 떨어지는 코드였다. 앞으로 한 문제를 풀더라도 더 효율성 있는 코드가 있을지, 다른 블로그를 참고하여 더 깊게 생각해보자. 우선 1번과 2번의 이미지를 비교했을 때, 다른 점은 while문과 for문의 차이이다. 1번은 while문을 사용하여 cnt를 별도로 세주었고, for문은 그런거 없이 배열의 값을 바로 가져와서 사용했다. 보통 while문을 사용할 때는 count를 세주는 변수를 따로 만들어 사용하기 보단, while q:와 같은 상황에서 주로 사용되는 것 같다.
2020 KAKAO BLIND RECRUITMENT_자물쇠와 열쇠 나의 잘못된 처음 풀이 생각. 벽을 돌면서 빈칸이 나오면, 그 빈칸에서 거리가 어떻게 되는지 계산한다. 즉, 한 빈칸을 기준으로, 다른 빈칸들이 거리에 어떻게 있는지를 계산한다. 풀이 코드 1. 기준점 하나를 for문으로 꺼낸다. 돌면서 거리를 append한다. for for으로 돌면서 해당 좌표를 기준점과 계산하여 거리를 계산한다. 이렇게 하나의 기준점을 기준으로 계산을 했다. 2. 키를 전부 돌면서 자물쇠에 맞는지를 전부 계산한다. 다른 사람 풀이 보고 이해가 안 가는 부분. 왜 저렇게 만들어 준 거지,,,? 그냥 해주면 안되나?? 굳이 background배열을 3배씩이나 해서 만들어 준 이유가 뭘까?? 해당 문제를 푸는 과정은 다음과 같다. 1. expendList라는 자물쇠 크기에 열쇠-1 * 2..
프로그래머스_소수 찾기 이 문제는 구현 방식을 떠올리는 것 보다는 피지컬이 필요한 문제였다. 이 문제를 통해 파이썬의 모르는 문법이 많다는 것을 알게 되었다. (파이썬 문법 잡긴해야하는데,,, 어떻게 해야 할까,,?) 나는 저 list(map(''.join, permutations(data, i)))가 왜 저렇게 나오는지,,, 모르겠다. 모르는 문법들 다 정리하자. map, list, join, permutation 등등,, 파이썬 문법 정리 map map(f, iterable)은 함수(f)와 반복 가능한(iterable) 자료형을 입력으로 받는다. map은 입력받은 자료형의 각 요소를 함수 f가 수행한 결과를 묶어서 돌려주는 함수이다. 위의 코드를 다시 보자면, permutations(data, i)을 통해 여러 데이터 리스..
[SQL] 프로그래머스_어린 동물 찾기 젊은 동물의 아이디와 이름을 조회하는 문제이다. 이 문제의 예시를 잘 보아야 해결할 수 있다. 젊은 동물이라고 하면 나이 = "젊음"으로 해결하는 방식을 떠올리지만, 해당 문제에서는 Aged이외에 Sick, normal등 여러 가지 존재하는 것 같다. 그래서 젊음이라는 것을 뽑고 싶다면 Aged 나이가 많은 것들을 제외한 나머지가 된다. 답: SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION not in ("Aged") ORDER BY ANIMAL_ID ASC
[SQL] 우유와 요거트가 담긴 장바구니 우유와 요거트를 동시에 담은 카트를 구해야 하는 문제이다. NAME = "요거트" and "밀크"하고 싶지만 이러한 문법은 없다. 해결 방법은 요거트를 가지고 있는 것을 뽑아낸 테이블 B와 밀크를 가지오 있는 것을 뽑아낸 테이블 A를 JOIN하여 두 개의 테이블에서 공통된 CART_ID를 구하면 해결되는 문제이다. SELECT A.CART_ID FROM CART_PRODUCTS A JOIN (SELECT * FROM CART_PRODUCTS WHERE NAME = "요거트") B ON A.CART_ID = B.CART_ID WHERE A.NAME = "우유"
[BOJ] DSLR_9019 이 문제는 L,R 구현을 시간 초과 내서 한 번에 풀지 못하였다. 나는 L,R같은 것을 구현하려고 할 때, 너무 직관적으로만 해결하려고 하는 것 같다. 숫자를 문자열로 바꾼 다음, 그 문자열을 왼쪽으로 반복문 돌리며 한칸 씩 옮기는 방식을 생각했었다. 하지만 테스트를 돌려본 후 바로 시간초과가 나버렸다. 아,, 그리고 지금 코드를 보고 이상해서 새로 안 사실인데, L, R연산 설명을 잘못 이해하고 있었다. 50에서 L하면 05가 아니라 500이구나,,, ,,,,,, 무튼 이 문제는 L,R 연산을 수학 공식처럼 효율성 있게 짜려고 생각해 보는 것이 관건인 것 같다. 문제 구현 자체는 굉장히 쉽다.
[BOJ] 보물섬_2589 위 문제의 풀이 과정은 너무나 쉽다. 근데 너무 어렵게 생각했다,,, 나는 이 문제를 풀 때, 트리의 지름 문제를 떠올렸다. 해당 지점에서 가장 먼 지점을 선택한 후, 그 지점에서 가장 먼 지점을 구한다면 그것이 최대 길이가 되는 줄 알았다. 근데 결국 정답은 그냥 전체 다 돌면서 BFS하면 해결되는 문제였다... 이렇게 쉬운 문제를 왜 어렵게 돌아서 가려고 한 것 일까? 지금은 이 문제에 대해 생각을 더 해보자. 어렵게 생각한 이유가 무엇일까? 전체를 bfs로 도는 방식은 시간초과가 날 것 같은 느낌이 강하게 든다.! 뭔가 이러한 느낌이 강해서,,, 말도 안되는 트리의 지름 방법 떠올리고! 뭐 무슨 visited 다시 계속 초기화하고!! 그랬던 것 같다..ㅠㅠ 이번에 알았으니 깊게 잘 생각해보자. 이 ..
[BOJ] 탈출_3055 이 문제는 풀이 방법이 바로 떠올라서 풀었지만, 효율성이 완전 꽝이였다. 그리고 그 효율성 꽝인 코드 마저 문제를 잘못 읽어 틀렸었다. r,c이 행과 열 같지만, 예제 입력을 보면 그 반대라는 것을 알 수 있다. (약간 말 장난 아닌가 싶긴 했다 ㅠㅠ, 그래도 다음 번엔 문제 꼭 잘 읽자.) 풀이 방법 1. water()로 물을 한 번만 퍼트린다. 2. beaver_move()로 비버를 한 번 움직인다. 비버가 목적지에 도달하면 멈추고, 비버 큐가 비어있어도 멈춘다. 비버 큐가 비어있어서 멈추는 것은 도달하지 못한다고 가정하고 "KAKTUS"를 출력해준다. 후기 이 문제의 핵심은 beaver_move()와 water()에서 큐를 for으로 돌리는 것 같다. 보통 기존의 풀던 bfs()와는 달리, 한 턴에..