no image
[코드트리] 파이썬 - 고대 문명 유적 탐사
코드트리 - 고대 문명 유적 탐사 # 소요 시간 : 2시간 # 접근 방법 설계를 대충했더니 디버깅 하기 힘들었던 문제였다. 마주했던 큰 문제 2개는 new_arr과 temp_arr 간의 얕은 복사, 90도씩 회전시킨 배열을 저장해주지 않은 점이었다. 우선 탐색을 시작하며, 가장 큰 1차 유물 획득 최대 값을 비교해줄 변수들을 선언해주었다. 또한, 원본 배열을 temp_arr에 deepcopy해주고 (0,0) 부터 (2, 2)까지를 왼쪽 상단으로 설정한 뒤 before_rotate에 복사해준다. 90도씩 총 3번 회전을 시키며 after_rotate에 저장해주고 before_rotate를 after로 갱신해준다. temp_arr에 after_rotate의 결과를 적용시켜주고 gain_score 함수를 실행..
2024.04.20
no image
[코드트리] 파이썬 - 나무 타이쿤
코드트리 - 나무 타이쿤 소요 시간 : 30분 # 접근 방법 구현, 시뮬레이션 유형 중 기본적인 문제라고 생각한다. 문제에서의 핵심은 영양제가 이동할 때 격자가 이어진다는 점(0과 N-1)과 주어지는 이동 칸 수를 N으로 나눈 나머지로 변경해주는 것이라 생각한다. 주어지는 로직 대로 아래 함수들을 사용하여 풀었다. move_m(d, al) 이동시킨 위치를 기록한 temp 빈 리스트를 생성해주고 loc_m을 순회해준다. 영양제의 다음 위치는 (전체 길이 N + 현재 위치 + 이동할 방향 * 칸수를 더한 뒤 N으로 나눈 나머지)로 구해주었다. temp에 append 해준 후 모든 순회가 끝나면 temp를 리턴해준다. grow_l(temp) 위 함수에서 return 받은 이동 후의 위치를 순회하며 먼저 +1씩..
2024.04.13
no image
[코드트리] 파이썬 - 정육면체 한번 더 굴리기
코드트리 - 정육면체 한번 더 굴리기 소요시간 : 1시간 30분 # 접근 방법 구현 문제 중에는 조금 쉬운 편이었던거 같다. 문제에서 중요한 점은 주사위의 상,하,좌,우,앞,뒤를 헷갈리지 않고 잘 기록하는 것이다. move_dice 함수를 시작하면서 다음 위치를 결정해준다. 이 때, 격자를 벗어나게 되면 방향을 +2 % 4를 통해 반대방향으로 돌려주고 ni, nj를 dice_i, dice_j에 기록해준다. bfs를 통해서 이번 턴에 얻게 되는 점수를 score에 더해주고 주사위를 돌려준다. 직전의 진행 방향에 따라, 주사위의 상, 하, 좌, 우, 앞, 뒤의 값을 변경해주고 주사위의 아랫면과 격자의 값을 비교하여 다음 방향도 결정해주면 된다. import sys sys.stdin = open('input...
2024.04.12
no image
[코드트리] 파이썬 - 팩맨
코드트리 - 팩맨 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 소요시간 : 3시간 30분 # 접근 방법 첫 풀이가 맞왜틀로 계속 헤매었던 문제였는데 사실 시간 초과가 발생했을 것 같다. 2시간이 경과한 후에 다시 로직을 점검하면서 코드를 수정하여 맞출 수 있었다. 처음엔 모든 칸을 빈 리스트로 만든 후, 몬스터들의 방향으로 추가해주었지만, 변경 후엔, 각 칸을 8 크기의 리스트로 만든 후 각 방향에 몬스터들의 수로 기록해주었다. 또한, 시체 존재 유무를 위한 4x4 크기의 리스트를 생성해주었다. T턴 동안 아래 로직으로 진행하였다. 몬스터 복제를 ..
2024.04.12
no image
[코드트리] 파이썬 - 루돌프의 반란
코드트리 - 루돌프의 반란 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 소요시간 : 3시간 40 # 접근 방법 삼성 SW 대비하여 풀었는데 다른 문제보다 구현이 조금 오래걸렸다. 특히, 산타와 루돌프가 움직인 후 충돌 체크를 하나의 함수로 하다보니 로직이 꼬인 부분이 있었고 시간을 많이 잡아먹었다. 설계 단계에서 조금 더 신중하고 확실하게 접근해야 되겠다.. 우선 진행 방향을 기록해두어야 하므로 헷갈리지 않게 매크로처럼 up, right ~ 대각선 방향을 모두 적어주었다. 입력받는 루돌프와 산타의 위치를 arr에 행과 열을 -1씩 해서 기록해두고,..
2024.04.07
[백준 1138번] 파이썬 - 한 줄로 서기
백준 1138 - 한 줄로 서기 시간 제한 2초, 메모리 제한 128MB # 조건 N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다. 어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다. 그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다. 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. N명의 사람이 있고, 사람들의 키는 1부터 N까지 모두 다르다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기..
2024.03.19
[백준 19948번] 파이썬 - 음유시인 영재
백준 19948 - 음유시인 영재 시간 제한 1초, 메모리 제한 512MB # 조건 감수성이 뛰어난 음유시인 영재는 일상생활 중에 번뜩 시상이 떠오르곤 한다. 하지만 기억력이 좋지 못한 영재는 시상이 떠오르면 그 순간 컴퓨터로 기록해야만 안 까먹는다! 시는 대문자, 소문자 알파벳과 빈칸으로 이루어져 있다. 시상은 매번 훌륭하지만 제목 짓는 센스가 부족한 영재는 시에 나오는 단어들의 첫 글자를 대문자로 바꾼 뒤 순서대로 이어서 제목으로 만든다. 만약 시의 내용이 'There is no cow level' 이라면 시의 제목은 'TINCL'이 된다. 시도 때도 없이 시를 기록하느라 낡아버린 영재의 키보드는 수명이 얼마 남지 않았다. 앞으로 스페이스 바와 영자판을 누를 수 있는 횟수..
2024.03.14
no image
[백준 14891번] 파이썬 - 톱니바퀴
백준 14891 - 톱니바퀴 시간 제한 2초, 메모리 제한 512MB # 조건 입력 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 회전 횟수 K(1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 방법은 두 개의 정수로 이루어져 있고, 첫 번째 정수는 회전시킨 톱니바퀴의 번호, 두 번째 정수는 방향이다. 방향이 1인 경우는 시계 방향이고, -1인 경우는 반시계 방향이다. 출력 총 K번 회전시킨 이후에 네 톱니바퀴의 점수의 합을 출력한다..
2024.03.05
[백준 11256번] 파이썬 - 사탕
백준 11256 - 사탕 시간 제한 1초, 메모리 제한 256MB # 조건 당신은 사탕 공장의 주인이다. 날마다, 당신은 J개의 사탕을 가게에 보내기 위해 상자에 포장해야 한다. 당신은 크기가 다른 상자 N개를 가지고 있다. 당신은 편리를 위해 상자를 최소한으로 쓰려고 한다. (박스를 다 채울 필요는 없다. 일부분만 채워도 된다.) 당신이 공장에서 나오는 사탕의 개수와 각 상자의 크기를 입력받고, 상자를 최소한으로 쓸 때의 사용되는 상자 개수를 출력하는 프로그램을 작성하라. 사탕들을 포장할 공간은 충분하다는 것이 보장된다. 입력 첫 번째 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각각의 테스트 케이스는 아래 형식을 따른다. 테스트 케이스의 첫 번째 줄에는 사탕의 개수 J와 상자의..
2024.03.04