분류 전체보기(107)
-
BOJ14890-경사로-알고리즘 복습 3일차
https://www.acmicpc.net/problem/14890문제 설명board에 각 라인별로 경사로를 놓을수있는지 없는지 판별하는 문제다.경사로의 높이는 1이다. 아이디어각 라인별로 연속되는 숫자끼리 묶고 경사로의 크기대로 묶은 숫자들을 분할 시킨 후 규칙에 따라 덩어리를 제거하는 방식을 생각했다. 겪었던 문제1. 테스트케이스에 맞춰 틀리는 케이스만 고치는 식으로 수정하다보니 정답처리받는데 많은 시간이 걸렸다.2. 경사로의 길이가 1인 경우를 생각하지 못했다. 이미 경사로를 세운 땅의 연속된 길이를 1로 바꾸는 코드가 있었는데중복으로 경사로가 세우지는 문제가 생겼다.3. 조건문을 너무 복잡하게 만들었었다. 각 단계에서 한덩어리씩 지워나가면 됐는데 어떤경우는 두덩어리를 지우고 하니조건식이 너무 복잡..
2024.10.14 -
BOJ 12100 - 2048 - 알고리즘 복습 2일차
https://www.acmicpc.net/problem/12100 문제 설명판을 상하좌우로 움직일때 숫자가 합쳐지는데 최대 5번 움직였을때 합쳐진 숫자의 최대값을 구하는 문제이다. 문제를 풀기전 했던 생각왼쪽으로 기울였을때 숫자를 합치기 위해 배열의 오른쪽부터 합쳐야하는지 왼쪽부터 합쳐야하는지 따져보았다.오른쪽부터 합치는경우 나중에 결과가 달라지니 왼쪽부터 합쳐야할거같은데 여러 경우를 생각했다.맨 왼쪽숫자를 두고 오른쪽으로 이동하며 같은 수를 찾는 방식을 가장 먼저생각했는데 그러면 나중에 수를 배치할때의 방법이안떠올라 옳은 접근방식이 아니란걸 알았다. 여러 방법들을 생각하다 큐에 넣고 연산을 한 후 배열에 다시 넣는 방법이 이상적임을깨달았다.최대값을 찾을때마다 전체 보드판을 봐야하는데 그것대로 복잡할거..
2024.10.13 -
알고리즘 탐색알고리즘 감잡기
탐색문제를 풀면서 생각나는 부분들 계속해서 적을 예정 탐색알고리즘의 근본일단 대표적으로 브루트포스 , 백트래킹, bfs, dfs 가 있다. 탐색하는 경우의 수를 머리에 그리면서 단순화 시킬 필요가있다.1차원 배열로 결과들을 기록해나갈수있고(nQ, 배낭문제), 각 단계가 2차원 배열일수도 있다(2048, 구슬 탈출2).이중 구슬 탈출2의 경우는 각 단계가 2차원 배열로 그려지지만 실제로 중요한것은 공의 위치이므로 공의 위치만을 저장하여 풀수도있다. bfs는 최단경로, 최소 횟수에 유용하고백트래킹은 특정 조합을 찾는 경우, 특정 조합의 개수를 찾는경우에 유용하다.dfs는 거의 쓸일이 없고 있어도 bfs로 풀수있다. 백트래킹 [Python] 백트래킹 (+ DFS와 차이)백트래킹이란?백트래킹이란 현재 상태에서..
2024.10.13 -
BOJ-13460 구슬탈출2 - 알고리즘 복습 1일차
https://www.acmicpc.net/problem/13460 문제 목표판을 기울여가면서 빨간공만 빠뜨리기 위한 최소 시행 구하기 문제풀이 아이디어1. 판에 크기에 해당하는 리스트를 만들기2. 각각 상하좌우로 공을 옮기는 메소드를 만듬3. 완전탐색으로 모든 경우를 시행해봄 처음 코드 (실패)r,c = map(int, input().split(" "))redLoc = [-1,-1]blueLoc = [-1,-1]board = [list(input()) for _ in range(r)]def swap(loc1, loc2, M): ### loc1 과 loc2는 튜플 temp = M[loc2[0]][loc2[1]] M[loc2[0]][loc2[1]] = M[loc1[0]][loc1[1]..
2024.10.13 -
topcit 기술영역 소프트웨어 공학 개요
목표1. 소프트웨어의 특성과 문제점을 설명할 수 있다.2. 소프트웨어공학의 배경과 목적을 설명할 수 있다.3. 소프트웨어 개발 프로세스 모델에 대해 설명할 수 있다. 핵심키워드- 소프트웨어의 특성- 소프트웨어 생명주기- 요구사항 분석, 설계, 구현, 테스팅- 소프트웨어 요구관리, 유지관리, 형상관리, 품질관리 공부시작 전 궁금증1. 소프트웨어의 품질이 어떻게 평가되고 관리될까?2. 프로세스 모델이 어떻게 변화하여 왔을까?3. 소프트웨어 공학이라는 학문은 어떠한 필요로 생겨났을까?4. 소프트웨어 공학에서 다루는 개념은 무엇일까? 내용정리 소프트웨어 공학의 정의 : "소프트웨어의 개발, 운용, 유지보수 등의 생명주기 전반을 체계적이고 정량적으로 다루는 학문" 소프트웨어 공학의 4가지 중요요소- 방법 : ..
2024.09.19 -
파이썬 복습 2
1. 이터러블? 이터레이터? 제네레이터?가장 먼저 이터러블에 대해 이해해보자. 이터러블은 내부 요소를 하나씩 리턴할 수 있는 객체를 말한다.우리가 흔히 for을 사용하는 자료형들, 리스트 , 딕셔너리, 셋을 떠올릴 수 있다.시퀀스 타입이든 ,컬렉션 타입이든 내부 요소를 하나씩 리턴할 수 있다면 이를 이터러블이라고 말할 수 있다. 이터레이터는 클래스에서 선언된 __next__() 함수나 내장함수 next()를 통해 원소를 순차적으로 반환할 수 있는 객체들을 말한다.이터러블은 __iter()__를 통해 이터레이터를 반환할 수 있고 그후 반환받은 이터레이터의 next를 통해 순차적으로 내부요소를 반환할 수 있다.list = [1,2,3,4]type(list) # listiter = iter(list)typ..
2024.09.02