분류 전체보기 126

[BOJ 백준] 10825번 : 국영수 (Python, 파이썬)

www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 간단한 문제였지만 파이썬에서 람다를 활용하여 정렬하는 법을 알 수 있었다. 리스트에 들어오는 원소는 (Junkyu, 50, 60, 100)이다. 맨 앞에 문자가 있으므로 뒤에 숫자들도 문자로 인식된다. 그렇기 때문에 람다식에서 숫자들을 int로 형변환 해줘야 한다. 정렬순서는 문제에 나와있는 것과 동일하게 하면된다. 국어 점수가 감소하는 순서로 국어 점수가 같으면 영어 점수가 증가하는 순서..

[BOJ 백준] 2580번 : 스도쿠(Python, 파이썬)

www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 백트래킹을 활용하는 문제였다. 스페셜 저지이므로, 답이 여러개 나올 수 있다. 3x3으로 처리된 부분을 어떤식으로 검사 해야할 지 아이디어가 잘 안떠올랐다. 구현 로직 입력받은 스도쿠에서 0이 들어간 곳의 좌표를 따로 저장한다 0이 있는 위치에 들어갈 수 있는 후보 숫자들을 리스트에 저장한다 1부터 9까지 저장된 리스트(numbers)를 생성한다. 스도쿠 전체를 탐색하며 행, 열, 3x3 배열에 있는 0이 아닌..

[BOJ 백준] 2638번 : 치즈 - 파이썬, Python

www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5≤N, M≤100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 표 www.acmicpc.net 문제의 구현 로직은 다음과 같다. 모든 치즈가 다 녹았는지 확인한다. 남은 치즈가 있다면 전부 녹을 때 까지 아래의 과정을 반복한다. 다른 치즈 내부 공간에 있지 않은 치즈들 중 외부 공기와 2개 변 이상 접촉한 치즈를 체크한다. 체크된 치즈를 녹인다. 1, 3번은 크게 어렵지 않은데 2번이 조금 까다로운 편이었다. 단순히 상,하,좌,우 중 공기인 칸이 2개 이상인지만 확인하면 안된다. 왜냐하면 상하좌..

[BOJ 백준] 9205번 : 맥주 마시면서 걸어가기 - 파이썬, Python

https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 전형적인 BFS 탐색을 활용해서 푸는 문제였다. 상근이는 무조건 집 -> 편의점 -> 편의점 .. -> 페스티벌 로 움직이기 때문에 다음번 편의점에 가서 항상 맥주를 최대로 살 수 있다. 굳이, 이동할 때 마다 이동거리를 50m로 나누면서 이동 가능 여부를 판단하지 않고 맥주를 20개 먹었을 때 갈 수 있는 최대 거리인 1,000m를 기준으로 다음번 편의점 또는 페스티벌 장 까지의 거리가 1..

[BOJ 백준] 9466번 : 텀 프로젝트 - 파이썬, Python

www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net DFS를 활용해 사이클 여부를 판단하는 문제이다. 사이클 여부를 판단하는데 익숙하지 않아서 다른 사람들의 코드를 보고 풀었다. 꼭 복습해야한다, 소스코드 import sys sys.setrecursionlimit(111111) # 재귀 깊이 설정 sys.stdin = open("input.txt", "r") def dfs(cur): global cnt, visited, done visited[cur] = True n..

[Level 4 프로그래머스] 카카오 기출, 2020 KAKAO BLIND RECRUITMENT - 가사 검색(Python)

programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 트라이(Trie) 자료형을 사용하여 풀 수도 있지만, 이분탐색을 사용해서 풀어보았다. 이분탐색은 따로 구현하지 않고 Python의 bisect 라이브러리를 활용하였다. 문제 해결 2개의 배열을 사용한다. 각각 주어진 단어, 단어의 순서를 반대로 한 단어를 리스트에 추가한다. 예를들면 "frodo"라는 단어를 "frodo"와 "odorf"로 나누어 각각의 배열에 담는다. 단어의 순서를 바꾸는 것은 word[::-1] 을 하여 append 하면 거꾸로 담긴다 각 배열을 이분탐색을 하기 위해 정렬한다. queries가 접미사인지, 접두사인지 구분하고 그에 맞게 ..

Azure CLI 정리 - ACR(Azure Container Registry)에서 이미지 삭제

ACR에서 컨테이너 이미지 삭제 (이미지 이름, 태그 사용) az acr repository delete --name {registryName} --image {imageName:tag} # example az acr repository delete --name myregistry --image acr-helloworld:latest 태그에 따라 삭제하면 해당 이미지와 digest가 동일하게 연결된 다른 모든 이미지도 삭제된다. 그렇게 때문에 삭제 전, 해당 이미지의 digest를 확인하는 작업이 꼭 필요하다. az acr repository show-manifests --name {acrName} --repository {repositoryName} 매니페스트 다이제스트란? 관련 문서 리포지토리 & 이..

DevOps/Azure 2021.01.05

Python list 원소 입력 : 입력 시 원소 증감하기

알고리즘 문제를 풀다보면 원소의 시작이 1부터 되는 경우가 종종 있다. 리스트에서 인덱스는 0부터 시작하므로, 입력을 받을 때 부터 1을 빼고 리스트에 저장하려면 lambda를 사용하면 된다 # 입력 예시 # 1 2 3 4 5 6 # 기존 방식대로 입력을 받아서 1씩 빼주는 경우 mylist = list(map(int, input().split())) for i in range(len(mylist)): mylist[i] -= 1 print(*mylist) # 0 1 2 3 4 5 # lambda를 활용하여 입력 받을 때 부터 1을 빼줌 mylist = list(map(lambda x : int(x)-1, input().split())) print(*mylist) # 0 1 2 3 4 5

Programming/Python 2021.01.05

코딩테스트에서 자주 쓰는 C++ STL 라이브러리, 자료구조, 알고리즘 정리(1) - 유니온 파인드(Union-Find)

Union-Find Union-Find에 대해 알아보자 유니온 파인드는 자료구조 이므로 단독으로 쓰이기 보다, 알고리즘(크루스칼 등)에 활용된다 관련 문제 백준 1717번 집합의 표현 백준 1976번 여행 가자 기본 개념 유니온 파인드는 '집합'을 관리하는 자료구조이며 서로소 집합(Disjoint Set) 이라고도 불린다. 유니온 파인드를 활용하면 다음과 같은 작업을 할 수 있다. 원소 A와 원소 B가 같은 집합에 속하는지 확인 -- Find 함수 원소 A가 속한 집합과 원소 B가 속한 집합을 병합 -- Union 함수 방식 초기화 for (int i = 0; i n >> m; for (int i = 1; i n1 >> n2 >> cost; graph.push_back({cost,{n1,n..