파이썬

    [Python/파이썬 프로그래머스] 튜플

    programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 2019 카카오 개발자 겨울 인턴십 문제 풀이 우선 주어진 s의 값을 replace를 써서 다듬고 리스트 형변환을 시켜줬씁니다. 그 다음 출력값이 입력 index에 상관없이 입력 갯수가 작은거부터 출력시켜줘야해서 cnt 값에 갯수랑 index값을 넣어준 뒤 cnt 값 따라가면서 flag로 기존에 존재하는 값인지 체크해주고 없..

    [Python/파이썬 백준 13913] 숨바꼭질 4 (BFS)

    www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 다른 숨바꼭질 문제랑 같지만 path를 하나 더 써줘서 nx 인덱스에 전에 방문했던 x를 넣어줬습니다. 그 뒤 path[end]에 값을 따라가다보면 start가 나오게됩니다. import sys from collections import deque input=sys.stdin.readline start,end=map(int,input().split()) graph=[-1]..

    [Python/파이썬 15990 백준] 1, 2, 3 더하기 5

    www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 풀이 1차원으로 계속 규칙을 찾으려니 30분정도 봤는데 못찾았다.. 어렵네용... 답을 참고해서 이해한 내용을 적자면 dp [1], dp[2], dp[3]에 각각 1,2,3으로 끝나는 상황을 넣는다. ex) dp[3] 은 2 1 1 2 3 이 예시와 같이 끝나는 숫자가 1일때 2일때 3일때 각각 1개씩이다 그 후 n이 만약 6인 상황에서 dp[5]에서 2로 끝난거 +1을 해주거나, 3으로 끝난거에 +1을 해주면 -> dp[6][0] dp[4]에서 1로 끝난거에 ..

    [Python/파이썬 3055 백준] 탈출

    www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 bfs 문제인데 물의 경로가 고슴도치에 영향을 주는 문제 처음 물(*)을 bfs 돌려서 check_water에 시간을 넣어줬습니다. 이 과정에서 물이 여러 개인 경우랑 두번째 물 bfs 일 경우 시간이 더 적게 걸리는 상황으로 걸러줬습니다. 다음 고슴도치(S) bfs 돌려서 물이 아예 없을 경우와 물보다 빨리 고슴도치가 움직인 경우를 걸러줬습니다. 제출과정에서 계속 10%에서 불통됐는데 반례가 D.. ... ..S 이..

    [Python/파이썬 11724 백준] 연결 요소의 개수

    www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 풀이 처음에 연결요소를 몰라서 구글링한 결과 그냥 이어진 덩어리를 말하는거 였네요. 간선으로 이어졌으면 한 덩어리입니다. 그래서 이 문제는 dfs나 bfs로 0~n 점까지 bfs를 써서 이어진 모든 점들을 구해주고 방문한 점은 check를 True로 하여 몇번 bfs 돌렸는지 갯수를 셌습니다! # 연결 요소의 개수 import sys from col..

    백준 알고리즘 문제 100개 달성!!!

    백준 알고리즘 문제 100개 달성!!!

    4월까지 200개가 목표긴 한데 되려나... 처음에 자료구조 위주로 스택 큐 등등 풀었습니다. 그르다가 알고리즘 구현,그리디,dp,bfs,그래프 등 맛보기로 풀다가 bfs문제가 재밌어서 bfs 위주로 풀었네용 다음에 삼성 기출 문제 맛봤는데 푸는것도 10문제 풀면 3,4개 풀긴 하는데 이게 공부가 되는건가 싶어서 지금은 다시 기초를 제대로 잡아야겠다 생각해서 저기 백준 문제집에 코드플러스?? 저거 sw역량 테스트 준비까지 다 푸려고 계획중입니다.. 30분에서 한시간정도 잡고 풀 수 있을거 같으면 계속 풀고 문제 못풀면 검색해서 답 보면서 이해하는 식으로 하구있어용... 올여름까지 300문제가 목표 다들 화이또!!

    [Python/파이썬 15665 백준] N과 M(11)

    www.acmicpc.net/problem/15665 15665번: N과 M (11) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 같은 수를 여러 번 골라도 된다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 7) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제의 조건을 만족하는 수..

    [Python/파이썬 15652 백준] N과 M(4)

    www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 itertools 쓴거 엄청 쉽네용 import sys from itertools import combinations_with_replacement input=sys.stdin.readline n,m=map(int,input().split()) lst=[i for i in range(1,n+1)] lst=list(combinations_with_replacement(lst,m)) for i in lst:..

    [Python/파이썬 백준 1759] 암호 만들기

    www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 문제 조건이 자음 최소 2개, 모음 최소 1개가 꼭 있어야하구 사전식으로 정렬 출력입니다. 시간 제한 2초라 널널했습니다. 일단 자음 모음 리스트로 나눠주고 그 다음 조합으로 했습니다. 주석 참고하세용! # 암호 만들기 # 리스트 -> 문자열 만드는게 쫌 빡셌음 import sys from itertools import combinations input=sys.stdin.readline l,c=map(int,i..

    [Python/파이썬 10819 백준] 차이를 최대로

    www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 풀이 조합 permutation 써서 브루트 포스 알고리즘으로 전부 다 계산해줬습니다. # 차이를 최대로 import sys from itertools import permutations input=sys.stdin.readline n=int(input()) a=list(map(int,input().split())) a_lst=list(permutations(a,n)) max_size=-sys.maxsize for i in ..