만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/programmers&bj 78

[python] 백준 10828번: 스택 (파이썬으로 스택 구현하기)

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net C++ STL 엔 stack 이 있지만, 파이썬엔 없다. 파이썬은 list 가 stack 의 역할을 할 수 있다. 정말 강력한 언어라는게 체감이 되는 문제. 또한 파이썬엔 switch/case 가 없다고 한다. 왜냐면 그냥 if/elif 가 그 역할을 다할 수 있으니까 그런 것 같다. from sys import stdin stack = [] def push(X): stack..

[python] 백준 1010번: 다리 놓기

https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 조합으로 푸는 문제다. 중고등 수학을 했다면 이해는 바로되는 문제. 왼쪽에 N개, 오른 쪽에 M개의 노드가 있는데 M개 중에서 N개를 꼽아 서로 중복되지 않게 (순서는 무관하게) 왼쪽 N개의 노드와 이어 다리를 만드는 문제다. n_C_m 으로 표현할 수 있다. 이는 팩토리얼로 m! / (m-n)! * n! 으로 표현 가능하다. 코드 import sys,math T = int(input()) for..

[python] 백준 1152번: 단어의 개수

https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 � www.acmicpc.net 파이썬의 강력함을 느낄 수 있는, 문자열 처리 문제 중 하나. 매우 쉬운 수준이다. 파이썬을 배우며 놀랄 수 밖에 없네... 코드 import sys a = sys.stdin.readline().split() print(len(a)) 배운 것 len() 함수는 리스트의 요소 수를 리턴한다. 물론 단어가 중복되어도 list 는 요소로 추가가 되므로 중복에 관해 고려 안해도 된다. sys.st..

[python] 백준 1902번: 수 찾기

https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안�� www.acmicpc.net 코딩테스트용 언어로 C++ 만을 파고 있었는데, 이번에 파이썬으로 시작해보고자 한다. 코드 N = input() A = map(int, input().split()) M = input() B = map(int,input().split()) A = list(A) B = list(B) for e in B: if e in A: print(1) else: pr..

[C++] 백준 1309번: 동물원

https://www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net 알고리즘 분류 : DP 푸는 과정 사자의 배치는, 각 행별로 없거나 앞의 행의 대각선에만 배치가 가능하다. 앞이 00이라면, 00 10 01 이 가능 앞이 10이라면 00,01 앞이 01이라면 00,10 이 가능 하다. 말하자면, 2*N칸의 우리에 사자를 배치할 수 있는 경우의 수는 N번째칸에 00이 가능한 경우의 수 + 01이 가능한 경우의수 + 10이 가능한 경우의 수인데, 각 경우를 d[n][0] / d[n][1] / d[n][2] 이라고 하면 d[n][0] = d[n-1][0] + d[n-1][1] + d[n-1][2] d..

[C++] 백준 11651번: 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 정렬하기류의 문제이다. C++에서는 "algorithm" 헤더에 포함된 sort() 함수를 사용하여 풀 수 있다. sort() 의 3번째 parameter 는 return type bool 의 함수로 정렬을 판단한다. 디폴트는 오름차순이다. 이 문제는 커스터마이징한 비교 함수를 만들어 풀었다. #include #include #include..

[C++] 백준 10953번: A+B - 6

푸는데엔 여러 방법이 있겠지만, 나는 strtok 를 사용한 정직한 방법과 어차피 input 은 X,X 으로 고정적이니까 string 을 사용한 방법 2가지를 해보았다. 방법1. #include #include #include using namespace std; int main() { int T,a,b; char input[5]; cin >> T; char * tok; for(int i=0; i> input; tok = strtok(input,","); a = atoi(tok); tok = strtok(NULL,""); b = atoi(tok); cout strtok 를 사용하기 위함. 방법2. #include #include #include using namespace std; int main() {..