전체 글 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..

알고리즘 2022.06.01

파이썬 튜토리얼 1. 애피타이저 (Whetting Your Appetite)

https://docs.python.org/3/tutorial/appetite.html 만약 당신이 컴퓨터로 많은 작업을 한다면, 결국에 당신은 자동화 하고 싶은 일을 발견하게 될겁니다. 예를들면, 당신은 대용량 텍스트 파일에서 찾아바꾸기를 수행하거나, 복잡한 방법으로 많은 사진들을 정리하거나 이름을 바꾸고 싶을 수도 있습니다. 아마도 당신은 작은 커스텀 데이터베이스나 특정 GUI 어플리케이션 혹은 간단한 게임을 만들고 싶을 수도 있습니다. 만약 당신이 전문적인 소프트웨어 개발자라면, C/C++/JAVA 라이브러리를 사용하게 될수도 있지만 그 과정에서 보통 코드작성/컴파일/테스트/리컴파일 싸이클이 너무 많은 시간을 소요합니다. 그리고 당신은 특정 라이브러리를 위한 test suite를 작성하며 test ..

파이썬 2020.07.10

대경권 대학생 프로그래밍 경진대회 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..

알고리즘 2018.04.28

대경권 대학생 프로그래밍 경진대회 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..

알고리즘 2018.04.28

boj 14699 관악산 등산

게을러져서 문제도 많이 안풀고 풀이 남기는 것도 귀찮았는데 그래도 주1회 정도는 포스팅을 하려고 다시 마음을 먹었다.서울대 프로그래밍 콘테스트 문제를 하나씩 풀어나가고 있다. 문제링크 : https://www.acmicpc.net/problem/14699문제를 읽고 처음 든 순간은 최단거리네? 최단거리 알고리즘 중에 아무꺼나 하나 골라 쓰자였다. 그 생각에 사로잡혀 문제 조건도 확인안하고 다익스트라를 n번 돌리는걸로 답을 구해 시간초과 ... 와샬플로이드써서 시간초과 .... 그렇게 두번 실패를 하고 찬찬히 다시 문제를 읽어보니 간단한 dp 문제였다. 코딩 테스트 같은걸 볼때 쉬운 문제라도 이런 실수를 해버리면 시간안에 못풀수있겠다는 생각이 든다. 경각심을 가져야겠다. 풀이 : 일단 더 위쪽 쉼터에서 아..

팁스타운 배 코드챌린지 본선 - 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..

알고리즘 2017.05.23

프로그래머스 - Summer coding 온라인 예선 3번

5월 20일 오후 한시에 있었던 스타트업 인턴 채용을 위한 대회인 Summer coding 온라인 예선에 참가하게 되었고 문제와 해답을 공유 합니다. 제가 공유한 코드는 전부 만점이긴 하지만, 대회라는 시간이 촉박한 상황에서 작성 했기 때문에 다소 지저분한 코드가 있을 수 있습니다. 문제 N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 하고 싶습니다. 단 스티커 한 장을 뜯어내면 양쪽으로 인접해있는 스티커는 찢어져서 사용할 수 없게 됩니다. 예를 들어 위 그림에서 14가 적힌 스티커를 뜯으면 인접해있는 10, 6이 적힌 스티커는 사용할 수 없습니다. 스티커에 적힌..

알고리즘 2017.05.21

프로그래머스 - Summer coding 온라인 예선 2번

5월 20일 오후 한시에 있었던 스타트업 인턴 채용을 위한 대회인 Summer coding 온라인 예선에 참가하게 되었고 문제와 해답을 공유 합니다. 제가 공유한 코드는 전부 만점이긴 하지만, 대회라는 시간이 촉박한 상황에서 작성 했기 때문에 다소 지저분한 코드가 있을 수 있습니다. 문제 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5g 기지국은 4g 기지국보다 전달 범위가 좁아, 4g 기지국을 5g 기지국으로 바꾸면 어떤 아파트에는 전파가 도달하지 않습니다.예를 들어 11개의 아파트가 쭉 늘어서 있고, [4, 11] 번째 아파트 옥상에는 4g 기지국이..

알고리즘 2017.05.21