Algorithm (PS)

·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 어려운 문제는 아니지만.. 구현하는데 시간이 1시간정도 걸렸다 흑흑 조건에 따라서 열심히 구현해주면 된다.. 시간 계산할때는 분 먼저 계산하고 시간을 계산하는식으로 했다 이거 이번에 카카오 블라인드에 나왔는데 기억하면 좋을 것 같다 그리고 defaultdict 를 사용하니깐 딕셔너리에 key가 없고 처음일 때도 += 연산자를 사용할 수 있어서 미리 딕셔너리 에러를 피할 수 있다 from colle..
·Algorithm (PS)
https://www.acmicpc.net/problem/14382 14382번: 숫자세는 양 (Large) 예제 입출력 1번에 대해서, 2 × 0 = 0, 3 × 0 = 0 등등으로 이어지므로, 블리트릭스는 0외에는 다른 숫자를 기록할 수 없을 것이며, 따라서 영원히 잠에 들 수 없다. 예제 입출력 2번의 경우, 1, 2, 3, 4, www.acmicpc.net 실버 4 문제로 어려운 문제는 아니다 그런데 오히려 좀 까다롭다고 느낀건 문자열을 출력할 때 print('Case #'+str(i+1)+": INSOMNIA") 쉼표 (,) 로 변수를 넣으면 공백열이 생긴다는걸 깨달았다 그래서 쉼표가 아니라 + 로 문자열로 만들어서 붙여줘야지 공백열 없이 문제가 원하는대로 출력할 수 있다 나는 딕셔너리 자료형을..
·Algorithm (PS)
https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 제한 조건에 min(n,m) % 2 == 0 이라고 표시되어 있다 이를 활용해서 바깥쪽 직사각형에서 안쪽 직사각형을 확인한다. 확인하는 순서는 맨 좌측 , 하단, 우측, 상단이다. 그래서 맨 좌측의 지점이 되는 i,i을 시작지점이라고 보고, 좌표와 이때 array[i][i] 의 값을 미리 저장해 둔다. ..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 리스트로 두고 풀어도 될것같긴한데 나는 popleft() 연산을 쓰고 싶어서 deque으로 자료구조를 사용했다 그런데 while 문 탈출조건인 limit에 대해서 고민이 좀 많았다 ;; 내가 3n으로 지정한 이유는 최악의 경우 숫자들이 3n회 이동해야 하기 때문에 그렇게 지정했다 그리고 카카오의 공식 해설에 따르면 투포인터로도 풀 수 있다.. https://tech.kakao.com/2022/0..
·Algorithm (PS)
첨엔 이게 왜 골드지? ㅎㅎ 이러면서 풀었는데 반례가 계속 나온다 ㅎㅎ..... 엉엉 원래는 투포인터로 풀었는데, 엄청 삽질을 했다 그러다가 파이썬 배열 원소 뒤집는걸 word[::-1] 이런식으로 써도 시간초과가 안난다는걸 알게되었고, 다른 분 풀이 참고해서 끝냈다 1. 우선 투포인터로 left, right 를 각각 0 과 len(word)-1 로 지정해주어서 맨 앞과 맨 뒤에서부터 하나씩 글자를 비교한다 2. 글자가 같으면 단순하게 포인터를 left는 앞으로, right는 뒤로 한칸 움직이면 된다 3. 글자가 다르면 left가 가리키는 글자을 제거하는 방법과 right가 현재 가리키는 글자를 제거하는 방법이 있다 -> 난 여기서 삽질을 엄청 했다 직접 해보면 된다 ㅎ 우선, 인덱스 크기가 left는 ..
·Algorithm (PS)
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net X위치가 결국 세가지 방법인 X-1, X+1, 2*X 로 이동할 수 있는데, bfs를 이용해서 최소시간을 찾도록 풀었다. 단, 최소시간을 찾아야 하므로 이미 방문한 위치는 다시 방문하지 않도록 visited 리스트를 통해서 방문 여부를 체크했다 걸린 시간은 노드의 위치와 함께 queue에 넣어서 queue에 append (순간 이동을 한 경우) 할때마다 time + 1을..
·Algorithm (PS)
https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에서 하라는대로 열심히 구현을 하면 되는 문제이다 알아두면 편한 것 : 10진수를 2진수로 바꿔주는 파이썬 모듈 bin() 를 활용하면 되는데 접두어 0b가 붙으니까 이걸 슬라이싱 해줬다 파이썬..역시 편하다 ㅎㅎ def solution(n, arr1, arr2): answer = ["" for _ in range(n)] a = [] # map 1 b = [] # map 2 for i in a..
·Algorithm (PS)
https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 시간제한이 1초이다 브루트 포스로 순회해서 단순하게 풀면 시간초과가 난다 (!) 최근에 문제를 풀면서 깨달은 것인데, 선형 자료구조 (ex. list) 에서 시간 복잡도를 줄이기 위해서 유리하게 사용해볼 방법 중 하나가 바로 투포인터 알고리즘이다 장점이라하면 포인터로 찍으면서 조건에 맞지 않은 후보들을 제쳐버려서 선형 자료구조를 보다 빨리 순회할..
minjiwoo
'Algorithm (PS)' 카테고리의 글 목록 (23 Page)