전체 글
![알고스팟 meeting 문제 파이썬으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE1Cmt%2FbtqwLBQmUre%2FuCvHCtcVKVU6NSI96IGai1%2Fimg.png)
알고스팟 meeting 문제 파이썬으로 풀기
남녀 회원의 수치의 합의 최소값을 출력하면 된다. 문제 보자마자 든 생각은 큰것은 큰거끼리, 작은건 작은거끼리 모아서 빼는게 작지 않을까였다. 그래서 리스트를 받아 정렬하고 빼는 코드를 써 보았다. 1 2 3 4 5 6 7 8 9 10 11 12 #meeting case = int(input()) for i in range(case): n = int(input()) # 사람 수 man = list(map(int, input().split())) # 남자 회원 woman = list(map(int, input().split())) # 여자 회원 man.sort() # 정렬 woman.sort() result = 0 # 출력할 값 for k in range(n): result += abs(man[k] - w..
![알고스팟 koogle 문제 파이썬으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoaygA%2FbtqwATw54rO%2FDoWkMDFOhqBdzhKAERYQA1%2Fimg.png)
알고스팟 koogle 문제 파이썬으로 풀기
암호의 세기를 구하는 문제이다. 해야할 일을 보자면 1. 암호의 입력을 받는다. 2. 암호의 세기를 각각 계산한다. 3. 세기가 가장 큰 암호를 출력한다. 언듯보면 간단해보이는 문제이다. 하지만 개인적으론 코드를 짤때 포기할뻔한 문제이기도 하다.... 코드를 보면 입력을 받아서 간단한 방식으로 암호 세기를 구하는 코드이다. 문제에서 준 예제를 넣으니 잘 나온다. 정답. 느낀점: 1. 원래의 코드는 숫자를 먼저 구하는 것이 아니라 알파벳 소문자의 수를 구하고 전체 길이에서 소문자의 수를 빼 숫자의 수를 구하는 방식이었다. 이를 위해서 알파벳 소문자로 이루어진 배열을 하나 선언하고 암호를 구성하는 숫자 혹은 문자가 그 배열 안에 있는지(있다=그것은 소문자이다->문자 수 +1, 없다= 그것은 숫자이다->다음으..
![알고스팟 decode 문제 파이썬으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU9tPL%2FbtqwvrmxRHX%2FHLf2g9yT9pI9kPlQyqzZIk%2Fimg.png)
알고스팟 decode 문제 파이썬으로 풀기
영어로 되있어서 주눅들 수 있지만, 이 문제는 결국 암호화된 숫자를 받아서 그것을 해독하는 것이다. 더 구체적으로 말하자면, 이 문제는 달팽이 모양 배열을 이용한 암호문과 암호문을 만들때 쓰인 배열의 크기를 받아, 해독하여 케이스의 숫자(몇 번째 케이스인지)와 해독문을 출력하는 것이다. 이 문제를 풀기 위하여 할 일을 번호로 나열해보자면, 1. 주어진 크기 (배열의 행과 열을 입력받는다)의 달팽이 배열을 만든다. 2. 배열에 암호문을 잘라 집어넣는다. 3. 배열을 달팽이 모양으로 탐색해가며 암호문을 해독한다(숫자를 알아낸다). 4. 알아낸 숫자를 문자로 치환한다. 정도가 되겠다. 내가 쓴 코드는 세 부분으로 나눌 수 있다. 코드1은 알파벳 출력을 위한 딕셔너리, 입력 받기, 배열에 암호문을 잘라 집어넣기..
![알고스팟 asymtiling 문제 파이썬으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWmWqt%2FbtqwkxGtBLF%2FZe2CsBsjMlGVqhCnIV6QD1%2Fimg.png)
알고스팟 asymtiling 문제 파이썬으로 풀기
tiling 관련 문제가 다 그렇듯, 타일을 주어진 도형으로 채우는 문제이다. 타일은 겹쳐서는 안되고, 90도 회전은 가능하지만, 타일링이 좌우 대칭이어선 안된다. 대칭을 허용하지 않는다는 조건을 뺏으면 쉬운 문제였을 거 같지만, 대칭이 안되기 때문에 생각을 좀 했어야 했다. 이것저것 생각을 하다 마땅히 떠오르는게 없어서 풀이를 찾아보다가 이런걸 발견했다. 즉 이 문제에서 구할 것은 타일을 놓을 수 있는 전체 경우의 수에서 대칭되는 경우의 수를 빼면 된다는 것이다. 더욱 구체적으로 말하면, 2*n크기의 직사각형을 채우는 비대칭 타일링 방법의 수는 n번째 피보나치 수, 즉 타일링이 가능한 전체 수에서 n이 홀수일 때는 (n-1)/2 번째의 피보나치 수를 빼고, n이 짝수일 때는 (n+2)/2 번째의 피보나..
![알고스팟 maxsum 문제 파이썬으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ61cb%2Fbtqwiw2gjGv%2FJ0upbJcQ0kQ4Er8RJj68jK%2Fimg.png)
알고스팟 maxsum 문제 파이썬으로 풀기
문제는 주어진 정수 배열에서 가장 큰 부분합을 구하는 것이다. 문제를 처음 봤을 땐 0보다 작은 수의 위치를 구해 양수 및 0이 있는 배열만을 뽑아 그 중 최대치를 구하면 될 거 같다는 생각이 들었다. 그런데 예를 들어 -1 99 -1 99 이런식으로 배열이 주어졌을 때 최대의 부분합은 99 -1 99를 더한 197이다. 하지만 내가 생각한 것으로 구하면 99가 최대라고 계산하게 된다. 이렇게 음수를 포함하는 것도 가장 큰 부분합을 구하는데 영향을 줄 수 있어서 고민하다가 이 글을 보고 이대로 코드를 짜보기로 했다. 출력도 잘 이루어진다. 제출해보니 시간이 엄청 걸리긴 했지만 정답이 떳다. 느낀점: 1. 양수만 합하는 변수와 다 합하는 변수를 같이 이용해 거기서 최댓값을 구한 것처럼 문제를 구할 때 하나..
![백준 1009번 문제 분산처리 c#으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyRPIb%2FbtqvTGE37T5%2FidvFt9X6fb1PYan1UjoCTk%2Fimg.png)
백준 1009번 문제 분산처리 c#으로 풀기
컴퓨터가 데이터를 처리하는데, 가장 마지막 데이터를 처리하는 컴퓨터를 찾는 문제다. 보자마자 드는 생각은 1의 자리수를 출력하면 될거같다 라는 생각이었다. 이 표처럼, 수를 거듭제곱 하면 1의 자리수가 순환한다.(2는 2-4-8-6, 3은 3-9-7-1로 순환) 이것을 이용하는 것이다. 그런데 문제를 자세히 보다보니 한가지 놓친점을 발견했다. 곱해지는 수인 a의 범위가 1부터 100까지였던 것이다. 그래서 내 처음 생각이 틀리지 않을까 했는데, 그냥 생각대로 해도 될거같다. 이유는 어차피 원하는것은 1의 자리수이기 때문에, 수가 얼마나 크던 그 수의 1의 자리수를 제곱해나가는 것이라 1의 자리수는 순환할 거라고 생각했기 때문이다. 코드가 긴건 함수때문이다. 설명을 하자면, a가 1자리수~10까지일때, 두..
![백준 1004번 문제 어린 왕자 c#으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyrncT%2FbtqvRJa0UaT%2FaVwKQpmFJAz6yqdIi8eNpK%2Fimg.png)
백준 1004번 문제 어린 왕자 c#으로 풀기
지도, 출발점, 도착점이 주어질 때 최대한 행성계를 덜 지나게 가는 경로의 행성계 진입/이탈 횟수를 출력하는 문제다. 일단 지금 드는 생각은 경로는 곡선이기 때문에, 출발점과 도착점을 안에 두는 행성계의 갯수를 출력하면 될꺼같다. (포함하는 행성계는 피하지 못하고 출입할 수 밖에 없기 때문) 또한, 행성계끼리 닿거나, 교차하지도 않고, 점이 경계에 걸쳐지지도 않았기에 일단은 이 생각대로 하면 될 거 같다. 구체적으로 하자면, 지나가야만 하는 행성계의 조건은 a를 출발점, b를 도착점이라 하고 행성중심을 c, 반지름을 r이라 할 때 1. a와 c사이의 거리 r > c와 b와의 거리 (출발점은 행성..
![백준 1003번 문제 피보나치 함수 c#으로 풀기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNpDW6%2FbtqvR4r93TK%2FHG5WMgo7eGhlysq9PNqwB0%2Fimg.png)
백준 1003번 문제 피보나치 함수 c#으로 풀기
c#으로 피보나치를 풀어보겠다. 위와같은 피보나치 함수에서 0과 1이 출력되는 횟수를 계산해 출력하면 된다. 처음 생각엔 0과 1을 세는 전역변수를 선언하고, 문제에 나온 피보나치 함수를 실행해 n이 0이나 1이 될 때마다 변수를 증가시키고 그것을 출력하면 될 거 같다는 생각을 하였다. 저 함수를 실행하면 피보나치 수도 구해지지만 그건 문제에서 요구하는 거랑은 아무 상관없으니 그냥 변수 하나 생성해 그걸로 입력받도록 하면 될거같다. 그런데 뭔가 잘 안됬다. 내가 c#에 대한 개념이 부족해서 그런거 같다. 클래스를 하나 만들고, 객체를 만들어서 출력을 하게 해봤다. ?? 문제가 제공해주는 예시를 넣어봤는데 맞지 않게 나왔다. 즉 이건 내 코드가 문제가 있다는 뜻. 그 이후로 이것저것 생각해봤지만 떠오르는게..