본문 바로가기

전체 글

(40)
사라지만 발판 python 풀이 2022 KAKAO BLIND RECRUITMENT 프로그래머스 코딩테스트 연습 - 사라지는 발판 [[1, 1, 1], [1, 1, 1], [1, 1, 1]] [1, 0] [1, 2] 5 [[1, 1, 1], [1, 0, 1], [1, 1, 1]] [1, 0] [1, 2] 4 programmers.co.kr minmax tree를 사용해서 풀었다. game(board, aloc, bloc) 함수는 두가지 값을 반환 하는데 ( Tuple[bool, int] ) 첫번째는 이번 차례에 aloc가 이길 수 있는지 여부 두번째는 이길 수 있다면 최소 길이 못 이기면 최대 길이를 반환 한다. next_aloc는 aloc가 다음번에 이동할 칸의 위치이고, 이때 game(board, bloc, next_aloc) 반환 값을 이용해 최적의 플레이를 하도록 한다. from typing..
파이썬 튜토리얼 1. 애피타이저 (Whetting Your Appetite) https://docs.python.org/3/tutorial/appetite.html 만약 당신이 컴퓨터로 많은 작업을 한다면, 결국에 당신은 자동화 하고 싶은 일을 발견하게 될겁니다. 예를들면, 당신은 대용량 텍스트 파일에서 찾아바꾸기를 수행하거나, 복잡한 방법으로 많은 사진들을 정리하거나 이름을 바꾸고 싶을 수도 있습니다. 아마도 당신은 작은 커스텀 데이터베이스나 특정 GUI 어플리케이션 혹은 간단한 게임을 만들고 싶을 수도 있습니다. 만약 당신이 전문적인 소프트웨어 개발자라면, C/C++/JAVA 라이브러리를 사용하게 될수도 있지만 그 과정에서 보통 코드작성/컴파일/테스트/리컴파일 싸이클이 너무 많은 시간을 소요합니다. 그리고 당신은 특정 라이브러리를 위한 test suite를 작성하며 test ..
대경권 대학생 프로그래밍 경진대회 3번 with 프로그래머스 요약하면 문제는 입력된 명령어대로 움직였을 때, 지나온 길의 수를 찾는것이다. 입력이 매우 작으므로 그냥 나올 수 있는 모든 길을 저장하는 2차원 배열(footprints)을 선언해 메모이제이션 했다. 코드 #include #include #include using namespace std; # -5~5의 범위를 가지는 2차원 좌표를 정수 하나로 변환 해주는 함수. int flatten(int y, int x){ y += 5; x += 5; return y*11+x; } int footprints[122][122]; int solution(string dirs) { int answer = 0; int now_y = 0; int now_x = 0; for (auto i=dirs.begin(); i!=dir..
대경권 대학생 프로그래밍 경진대회 2번 with 프로그래머스 오랜만에 알고리즘 문제를 푸니 기분이 좋아 대회 리뷰를 남긴다. 1번은 너무 단순한 구현 문제라 생략한다. 전형적인 dp 문제. 첫번째 입력 예제인 [1,1,1,1] 문제를 (0, [1,1,1,1])로 두고 (1, [1,1,1])과 (-1, [1,1,1]) 경우로 나누는 방법으로 recursive property를 찾아 문제를 해결했다. 코드 #include #include #include using namespace std; int d[102][1001*2], N;vector input;int dp(int state, int value){ int index_value = value + 1001; int &ret = d[state][index_value] ; if (ret != -1) return ret..
boj 14699 관악산 등산 게을러져서 문제도 많이 안풀고 풀이 남기는 것도 귀찮았는데 그래도 주1회 정도는 포스팅을 하려고 다시 마음을 먹었다.서울대 프로그래밍 콘테스트 문제를 하나씩 풀어나가고 있다. 문제링크 : https://www.acmicpc.net/problem/14699문제를 읽고 처음 든 순간은 최단거리네? 최단거리 알고리즘 중에 아무꺼나 하나 골라 쓰자였다. 그 생각에 사로잡혀 문제 조건도 확인안하고 다익스트라를 n번 돌리는걸로 답을 구해 시간초과 ... 와샬플로이드써서 시간초과 .... 그렇게 두번 실패를 하고 찬찬히 다시 문제를 읽어보니 간단한 dp 문제였다. 코딩 테스트 같은걸 볼때 쉬운 문제라도 이런 실수를 해버리면 시간안에 못풀수있겠다는 생각이 든다. 경각심을 가져야겠다. 풀이 : 일단 더 위쪽 쉼터에서 아..
5월 인바디 결과 원래 인바디를 잴 때 마다 업로드 하려 했으나 3월은 귀찮아서 못했다.바빠서 운동을 집에서 풀업하고 딥스 팔굽혀펴기 정도 밖에 못해서 크게 변한건 없는 듯 하다.3월에 비해 골격근 0.8kg / 체지방 0.1kg 이 늘었다.6월은 더 바쁘겠지만 그래도 시간 내서 운동 가보려고 다시 헬스장을 등록했다.6월 말에 다시 재러 가야겠다.
팁스타운 배 코드챌린지 본선 - 3번 예전에 풀었던 백준넷 단어와 주기율표 문제의 다운그레이드 버전https://www.acmicpc.net/problem/4507 저 문제는 조건이 상당히 까다로워 아직도 푼 사람이 두명밖에 없어서 뿌듯하다 ㅋㅋㅋ 동적 계획법 문제인데, dp(state)를 state~끝 문장을 처리 할 때 필요한 최소 단어 조각 갯수로 정의했다최대 단어 조각 길이는 5이므로 state부터 한자리씩 추가해가면서 단어 조각 목록에 있는지를 검사해 있으면 그 다음 글자부터 필요한 단어 조각 갯수를 계산하는 과정을 다섯번 반복한다. 그 중 최소값을 반환하면 된다. int d[20001];set dictionary;string str; int dp( int state){if(state>=str.length()) return 0;in..
팁스타운 배 코드챌린지 본선 - 2번 전형적인 스택 사용 문제순차적으로 입력받은 문자열을 순회하면서 스택이 비어 있거나 최상단 문자와 다르면 푸시최상단 문자와 같으면 팝 하는 과정을 반복 후에 스택이 비어있으면 모두 제거가능하다.시간 복잡도 O(n) int solution(string s){stack st; for(int i=0; i