목록전체 글 (27)
clap0107
https://school.programmers.co.kr/learn/courses/30/lessons/181905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이: 문자열을 뒤집는 방법 중 한 가지인 인덱스 슬라이싱을 사용하였다. 문자열[시작:끝:규칙]로 적을 수 있는데 규칙은 문자열을 슬라이싱 하는 숫자를 뜻한다. 규칙에 default값인 1을 적어주면 [0], [1], [2]씩 잘라서 새로운 문자열을 생성하고, 2를 적어주면 [0], [2], [4]씩 잘라서 새로운 문자열을 생성한다. 이걸 응용하여 문자열[::-1]을 적어주면 문자열을 뒤집어서 ..
https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 풀이: 파이썬에서 제공되는 find와 count 함수를 사용하면 쉽게 해결할 수 있다. find 함수는 찾고자 하는 문자열의 위치값(index)을 반환하고, count 함수는 찾고자 하는 문자열의 개수를 반환한다. 전체 문자열의 길이에서, 크로아티아 알파벳의 개수를 빼주면 정답을 얻을 수 있다. str = input() croatia = ['c=', 'c-',..
https://www.acmicpc.net/problem/1075 1075번: 나누기 첫째 줄에 N, 둘째 줄에 F가 주어진다. N은 100보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. F는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이: 확인해줘야 하는 횟수가 총 100 이하이기 때문에, 일일이 확인해 주는 브루트포스로도 충분해 보였다. 어떻게 구현할지 생각하는 것까지는 쉬운 편이었는데 문자열을 정수형으로 변경해 주는 부분에서 까다로웠다. 파이썬이 지원하는 slicing을 사용하면 간단히 해결되는 문제였다. c++에 익숙해서 파이썬이 적응이 안 된다... 방법 1: num = input() divisor = int(input()) length = len..

https://www.acmicpc.net/problem/1085 1085번: 직사각형에서 탈출 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램 www.acmicpc.net 풀이: 원점(0, 0)으로 부터의 거리, w로 부터의 거리, h로 부터의 거리를 확인해 주면 된다. 뭔가 코드를 작성한 뒤 간결하게 적을 수 있을 것 만 같았는데 역시나 더 짧은 코드가 있었다. 방법 1: x, y, w, h = map(int, input().split()) minimum = 1000 if w - x < minimum: minimum = w - x if x - ..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이: 단순 비교로 생각한다면 제한시간인 2초를 넘어버린다. 단순 계산으로 생각해 보면, 최대 개수인 500,000개를 500,000번 비교해야 되니 for문을 총 250,000,000번 반복해야 한다. 100,000,000번 연산이 통상 1초 정도 걸린다고 알려져 있기 때문에 단순 비교는 약 2.5초 정도 걸릴 것이다. 따라서 숫자 카드를 담고 있는 배열을 정렬해 ..