코딩 공부 13

#Python: SWEA 4881 - 배열 최소 합

※ 문제의 저작권은 SW Expert Academy에 있습니다. NxN 배열에 숫자가 들어있다. 한 줄에서 하나씩 N개의 숫자를 골라 합이 최소가 되도록 하려고 한다. 단, 세로로 같은 줄에서 두 개 이상의 숫자를 고를 수 없다. 조건에 맞게 숫자를 골랐을 때의 최소 합을 출력하는 프로그램을 만드시오. 예를 들어 다음과 같이 배열이 주어진다. 2 1 2 5 8 5 7 2 2 이경우 1, 5, 2를 고르면 합이 8로 최소가 된다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50 다음 줄부터 테스트 케이스의 첫 줄에 숫자 N이 주어지고, 이후 N개씩 N줄에 걸쳐 10보다 작은 자연수가 주어진다. 3≤N≤10 [출력] 각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 합계를 출력..

#Python: SWEA 1234 - 비밀번호

※ 문제의 저작권은 SW Expert Academy에 있습니다. 평소에 잔머리가 발달하고 게으른 철수는 비밀번호를 기억하는 것이 너무 귀찮았습니다. 적어서 가지고 다니고 싶지만 누가 볼까봐 걱정입니다. 한가지 생각을 해냅니다. 0~9로 이루어진 번호 문자열에서 같은 번호로 붙어있는 쌍들을 소거하고 남은 번호를 비밀번호로 만드는 것입니다. 번호 쌍이 소거되고 소거된 번호 쌍의 좌우 번호가 같은 번호이면 또 소거 할 수 있습니다. 예를 들어 아래의 번호 열을 철수의 방법으로 소거하고 알아낸 비밀 번호입니다. [입력] 10개의 테스트 케이스가 10줄에 걸쳐, 한 줄에 테스트 케이스 하나씩 제공된다. 각 테스트 케이스는 우선 문자열이 포함하는 문자의 총 수가 주어지고, 공백을 둔 다음 번호 문자열이 공백 없이 ..

#Python: SWEA 4873 - 반복문자 지우기

※ 문제의 저작권은 SW Expert Academy에 있습니다. 문자열 s에서 반복된 문자를 지우려고 한다. 지워진 부분은 다시 앞뒤를 연결하는데, 만약 연결에 의해 또 반복문자가 생기면 이부분을 다시 지운다. 반복문자를 지운 후 남은 문자열의 길이를 출력 하시오. 남은 문자열이 없으면 0을 출력한다. 다음은 CAAABBA에서 반복문자를 지우는 경우의 예이다. CAAABBA 연속 문자 AA를 지우고 C와 A를 잇는다. CABBA 연속 문자 BB를 지우고 A와 A를 잇는다. CAA 연속 문자 AA를 지운다. C 1글자가 남았으므로 1을 리턴한다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤ 50 다음 줄부터 테스트 케이스의 별로 길이가 1000이내인 문자열이 주어진다. [출력] #과 1번..

#Python: SWEA 4871 - 그래프 경로 (DFS)

※ 문제의 저작권은 SW Expert Academy에 있습니다. V개 이내의 노드를 E개의 간선으로 연결한 방향성 그래프에 대한 정보가 주어질 때, 특정한 두 개의 노드에 경로가 존재하는지 확인하는 프로그램을 만드시오. 두 개의 노드에 대해 경로가 있으면 1, 없으면 0을 출력한다. 예를 들어 다음과 같은 그래프에서 1에서 6으로 가는 경로를 찾는 경우, 경로가 존재하므로 1을 출력한다. 노드번호는 1번부터 존재하며, V개의 노드 중에는 간선으로 연결되지 않은 경우도 있을 수 있다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1≤T≤50 다음 줄부터 테스트 케이스의 첫 줄에 V와 E가 주어진다. 5≤V≤50, 4≤E≤1000 테스트케이스의 둘째 줄부터 E개의 줄에 걸쳐, 출발 도착 노드로 간선..

#Python: SWEA 2005 - 파스칼의 삼각형

※ 문제의 저작권은 SW Expert Academy에 있습니다. 크기가 N인 파스칼의 삼각형을 만들어야 한다. 파스칼의 삼각형이란 아래와 같은 규칙을 따른다. 1. 첫 번째 줄은 항상 숫자 1이다. 2. 두 번째 줄부터 각 숫자들은 자신의 왼쪽과 오른쪽 위의 숫자의 합으로 구성된다. N이 4일 경우, N을 입력 받아 크기 N인 파스칼의 삼각형을 출력하는 프로그램을 작성하시오. [제약 사항] 파스칼의 삼각형의 크기 N은 1 이상 10 이하의 정수이다. (1 ≤ N ≤ 10) [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 N이 주어진다. [출력] 각 줄은 '#t'로 시작하고, 다음 줄부터 파스칼의 삼각형을 출력한다. 삼각형 각 줄..

#Python: SWEA 5432 - 쇠막대기 자르기

※ 문제의 저작권은 SW Expert Academy에 있습니다. 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다.  - 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다.  - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다.  - 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다.  - 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레..

#6 반복문(for문, 중첩 for문, while문, break문, continue문)

1. for문 : 리스트, 튜플, 문자열과 같은 항목들의 특정 작업을 반복해서 수행하기 위해 사용 - for문의 조건식은 반드시 True/False여야 함 - for문 문법 for 변수 in 객체 : 명령문1 명령문2 2. 중첩 for문 : for문 안에 또 다른 for문이 들어있는 형태 - 중첩 for문 문법 for 변수1 in 순회할 객체1 : for 변수2 in 순회할 객체2 : 명령문1 명령문2 3. while문 : bool 값을 반환하는 조건식의 결과에 의해 반복 - while문 문법 while 조건식 : 명령문1 명령문2 4. break문 : 논리적으로 반복문을 빠져나갈 때 사용 - break문 문법 while 조건식 : 명령문1 if 변수 == true break 5. continue문 : ..

#5 조건문(if문, if~else문, if~elif~else문)

1. if문 : 어떤 조건을 만족하는 경우, 명령문을 수행하기 위해 사용 - 결과는 무조건 True/False 여야 한다. - if문의 문법 if 조건식 : 명령문 명령문 if 조건식 : result = "확인" print(result) result = "실패" a = 10 if a >= 8 : result = "성공" print(result) 2. if ~ else : 어떤 조건을 만족/ 불만족했을 때의 명령문을 상호배타적으로 수행 - 결과는 무조건 True/False 여야 한다. - if ~ else 문의 문법 if 조건식 : 명령문 명령문 else 키워드 : 명령문 명령문 a=7 if a >= 5 : print("성공") else : print("실패") 3. if ~ elif ~ else : 2개..

#4 파이썬의 산술 연산자, 대입 연산자, 관계 연산자, 논리 연산자, 비트 연산자

1. 산술 연산자 - + : 더하기 - - : 빼기 - * : 곱하기 - / : 좌변의 값을 우변의 값으로 나누기 (소수점으로 결과 값 나옴) - // : 좌변의 값을 우변의 값으로 나눈 몫 - % : 좌변의 값을 우변의 값으로 나눈 나머지 - ** : 좌변의 값을 우변의 값으로 제곱 - 덧셈, 뺄셈 예시 >>> a, b = 1,2 >>> print("{0} + {1} = {2}".format(a,b,a+b)) - 파이썬에서도 산술 연산자 우선 순위가 있음( 괄호>곱셈,나눗셈>덧셈,뺄셈) - 문자형과 숫자형 연산법 >>> a, b, c="2","6",9 >>> print(a+b) 26 >>> print(int(b)+c) 15 2. 대입 연산자 = += -+ *= /= //= %= **= 대입 좌변의 변수..