목록알고리즘 (192)
곽로그
문제 https://school.programmers.co.kr/learn/courses/30/lessons/150370 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 좀 더 간단하게 풀 수 있는 방법은, 날짜를 절대치로 환산해서 비교하는 방법이지만, 처음 이 문제를 풀 때는 그 풀이는 생각조차 나지 않았다. 여기서 접근하는 방법은 날짜 비교다. 처음에 접근한 방식은 (개인정보수집일자_월 + 유효기간) = x 를 기준으로 만료연도 = 개인정보수집일자_연 + x //12 , 만료월 = x%12 로 풀었다. 그런데 테스트 케이스 17번에서 계속 에러가 ..
문제 https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 풀이 앞으로 읽을 때와 거꾸로 읽을 때가 같다는 말은, 단어를 반으로 접었을 때 대칭이라는 것에서 힌트를 얻었다. 예제인 LEVEL로 예를 들어보자. 가운데 V를 기준으로 양끝에 있는 알파벳이 차례로 같다. 다시말해 0번째 알파벳과 4번째 알파펫, 1번째 알파벳과 3번째 알파벳이 같다. 여기서 대략적인 식을 세울 수 있다. 처음부터 단어의 중간 전까지 비교를 반복한다(중간에 있는 단어는 비교할 대상이 없기때문에 제외된다). 비교를 어떻게 하는가를..
문제 https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 해결 규칙만 찾으면 정말 쉽게 풀 수 있다. 그러기 위해서 필자는 표를 사용했다. n= 5일 때 라인번호 (i) 공백 개수 별표 개수 1 * 4 = 5-1 1 =2*1 -1 2 * * * 3 =5-2 3 =2*2 -1 3 * * * * * 2 =5-3 5 =2*3 -1 4 * * * * * * * 1 =5-4 7 =2*4 -1 5 * * * * * * * * * 0 =5-5 9 =2*5 -1 6 * * * * * * * 1 =6-5 7 =2*4-1 7 * * * * * 2 =7-5 5 =2*3-1 8 * * * 3 =8..
문제 https://www.acmicpc.net/problem/25083 개념 사실 이 문제는, 문제에서 출력을 복사한 다음 note에디터에 붙여넣었다가( 필자는 visual studio code를 사용했다) 그걸 다시 복사한 다음 인텔리제이로 붙여넣으면 쉽게 할 수 있다. 하지만 이 문제를 정석으로 푼다라고 한다면, 자바의 escape문자를 알아야한다. 예를 들어 따옴표를 포함한 "Java"프로그래밍 을 출력하고 싶다고 하자. 이걸 그대로 System.out.println("")에 넣으면 에러가 난다 . 코드를 ""안에 넣기때문에, 어디에서 코드가 끝나는지 모르게 되기 때문이다. 다시말해 빨간색 따옴표를 코드의 끝으로 알았는데, 주황색 따옴표가 또 나왔기 때문에 어디에서 끝내야할지 자바는 모른다. 그럼..
문제 https://www.acmicpc.net/problem/10811 10811번: 바구니 뒤집기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 풀이 문제에서 주어지는 i번째와 배열의 index만 잘 구분하면 쉽게 풀 수 있는 문제다. 컨셉은, 원래의 배열에서 i번째 부터 j번째 원소를 입력받을 새로운 배열을 만든 다음, 이 새로운 배열의 역순부터 0번째까지의 원소를 원래배열에 다시 복사 해 놓는 것이다. 길이가 n인 배열(가)의 a번째 부터 b번째 까지의 원소를 거꾸로 뒤집는 다고 가정하자 (여기서 주의할 점은 a가 배열의 ..
문제 https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개 www.acmicpc.net 풀이 리스트와 집합(set)을 활용하였다. 리스트로 입력받은 숫자배열에 대하여, 같은 숫자가 3개라면 set의 길이가 1이고, 같은 숫자가 2개라면 set의 길이가 2, 같은 숫자가 없다면 set의 길이가 3인 것으로 나누어서 풀었다 이때 같은 숫자가 2개인 경우, 같은 숫자를 알아내는 방법으로는 set를 순회하여 list에서 set 요소를 제거하면 list에 같은 숫자만 남는..
문제 https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.) www.acmicpc.net 풀이 60진수로 생각하면 쉽다. (주어진 분 + 걸리는 시간(분))을 60으로 나눈 몫이 더해지는 시간이고, 60으로 나눈 나머지가 더해지는 분이다. 정답을 출력할 때 시(hour)가 24시간을 넘으면 24을 빼주면 된다 코드 hour, minute = map(int,input().split(' ')) time_needed = int(input()) result_hour = ho..
문제 https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 풀이 두번째로 입력받은 숫자의 세번째 숫자/ 두번째 숫자/ 첫번째 숫자를 차례로 구해야한다. 문자열로 입력을 받으면 인덱스로 접근할 수 있으므로 인덱스를 이용하여 풀면 쉽게 풀 수 있다. 코드 a = int(input()) b = input() result3 = int(b[2]) * a result4 = int(b[1]) * a result5 = int(b[0]) * a result6 = a * int(b) print(result3, result4, result5, result6, sep='\n')