분류 전체보기 92

[백준/python]1259번 팰린드롬수

1. 문제 이 문제는 팰린드롬 수를 찾는 문제이다.팰린드롬 수란 뒤에서부터 읽어도 같은 수이다.2. 접근숫자를 문자 형태로 받아온 뒤, 0인 경우에는 종료한다.나중에 출력할 결과를 same이라는 변수로 만들어 'yes'로 초기화해둔다.숫자길이의 절반, 즉 길이를 2로 나눈 수까지 반복문을 돌려서num[i]와 num[-i-1]이 같은지 확인한다.만약 다른 경우에는 same 변수를 'no'로 바꾸고 반복문을 탈출한다. 처음에는 이상하게 에러가 생겨서 각 변수를 출력해보다가,str에 개행문자 '₩n'이 맨 뒤에 포함되어 생기는 오류임을 발견했다!rstrip()을 추가하여 오류를 해결하였다!! 3. 코드import sysinput = sys.stdin.readlinewhile True: num = str(..

[백준/python] 3980번 선발 명단

1. 문제 이 문제는 선수의 능력치를 고려하여 포지션을 정해 가장 최대의 능력치를 구하는 문제이다.11명의 선수들에 대해 11개 포지션에 대한 능력치를 수치화하여 제시한다.그 숫자들 중 모든 경우의 수를 고려하여 가장 최대의 합을 구하는 문제이다.즉, 전형적인 백트래킹 문제.2. 풀이솔직히 이 문제를 어떻게 풀어야 할지 감이 안 왔다.아직 알고리즘 실력이 부족하기 때문인 것 같다.어떤 상황에서 어떤 알고리즘을 써야 하는지 아직 잘모르는 것 같아서백트래킹 알고리즘을 다시 정리해야겠다고 생각했다.https://jemarque.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9-Backtrackin..

[알고리즘] 백트래킹 Backtracking

최근 코딩테스트 문제를 풀면서 알고리즘 정리가 필요함을 느꼈다.자주 출제되는데 아직 나에게 어려운 백트래킹을 먼저 정리해보려고 한다. 백트래킹 모든 경우의 수를 고려하는 알고리즘 백트래킹은 재귀를 활용해 모든 경우의 수를 확인하는 알고리즘이다.대표적으로 DFS, BFS를 사용하며 코딩테스트에서 잘 다루어지는 알고리즘이기도 하다.시간복잡도는 중복이 가능한 경우, N**2이고 중복이 불가한 경우는 N!이다. 목표한 조건에 도달하는 경우를 탐색하는 것인데,절대 목표에 도달할 수 없다고 판단이 되면 앞으로 돌아가서 다시 그 조건에 맞는 경우를 탐색한다. 1. DFS깊이 우선 탐색트리에서 바닥에 도달할 때까지 한쪽 방향으로만 내려가는 방식으로재귀함수를 사용하여 목표한 바가 나올 때까지 반복한다.일반적으로 모든 경..

[백준/python] 9081번 단어 맞추기

1. 문제 이 문제는 어떤 단어가 주어지고 사전식 정렬을 하였을 때그 바로 다음에 오는 단어를 찾는 문제이다.2. 풀이[접근 1]처음에는 모든 사전식 배열을 다 늘어놓고그 중에서 입력값을 찾은 뒤, 그 다음 값을 출력하는 방식을 생각했다. 1. 순열 라이브러리를 이용해 단어 조합을 모두 리스트에 넣는다.2. 처음 입력한 단어의 인덱스를 찾는다.3. 마지막 단어가 아닐 경우 다음 단어를 출력한다. 역시 코드 자체에 문제는 없었으나 결과가 시간 초과가 떠버렸다.필요 없는 데이터까지 다 구해서일까...바로 다음 순열을 어떻게 찾을지 긴 시간 고민했다. [접근 2]고민의 과정을 거쳐 뒤에서부터 숫자 크기를 비교하는 방식을 발견했다.그 뒤 숫자 위치를 바꾸고 거꾸로 정렬하는 방식으로 문제를 해결할 수 있었다.뒤의..

[백준/python] 11055번 가장 큰 증가 부분 수열

1. 문제 증가 부분 수열이란,수열의 부분 수열 중 증가하는 값으로만 이루어진 수열이다.단, 수열의 순서를 바꾸어서는 안 된다.그 중 합이 가장 큰 것을 구하는 문제이다.2. 풀이[접근 1]처음에는 dfs를 생각해서 문제를 풀었다. 1. 처음 값을 더해준다.2. 해당 값 보다 뒤에 있는 숫자들에 대해 그 값이 더 클 경우 dfs를 실행한다.3. dfs 실행을 마치고나면 기존 결과와 현재까지의 합계 중 큰 값을 결과값으로 바꾼다.4. 값이 더 작은 경우에는 넘어간다. 코드 작성은 잘 하였고 답에는 이상이 없어서 채점을 했는데 결과는 실패..시간 초과가 떠버렸다.그래서 접근 방법을 바꾸었다. [접근 2]이번에는 dp를 활용해서 문제를 풀었다.dp 테이블을 만들어서 각각 인덱스까지의 최대 합을 구한 뒤 그 중..

[백준/python] 20436번 ZOAC 3

백준 20436번 ZOAC 3 1. 문제 이 문제는 쿼티 자판에서 타자를 칠 때 걸리는 시간의 최솟값을 구하는 문제이다.키를 누르는 데 1의 시간이 걸리고 이동하는 데 두 좌표의 거리 (직선 거리 말고 택시 거리) 만큼의 시간이 걸린다.독수리 타법, 즉, 양손의 손가락을 하나씩만 사용하는 타법이고 왼손과 오른손은 한글 자음 모음의 위치로 구분한다.2. 풀이조금 귀찮은 구현 문제였다.쿼티식 키보드에 있는 모든 문자, 즉 알파벳 26개를 모두 배열에 넣어야했다.거리 계산의 간편함을 위해 가장 아래 왼쪽에 있는 'Z'를 (0,0)이라고 생각해서큰 배열 안에 3개의 줄이 있는 이중배열 구조로 키보드를 표현했다. 입력값은 모두 좌표가 아닌 문자로 주어지기 때문에 이걸 좌표로 바꾸는 함수를 만들었다.coordina..

[프로젝트] 스마트오더 플랫폼, Food Bridge 프로젝트 회고

2024. 01. 15 ~ 2024. 04. 28까지 3달 넘게 진행한 프로젝트가 끝났다.4월 5일에 배포를 하고 그 뒤에 서비스를 운영하며 유지보수 기간도 가졌다.긴 프로젝트 기간 동안 어떤 일들이 있었는지 그때마다 기록했으면 좋았겠지만 아쉽게도 그러지 못했다.이게 첫 프로젝트라 그래서일까 기록의 중요성을 너무나 늦게 알아버렸다.그 당시에 기록은 못했지만 사후기록이라도 남겨봐야지. 첫 프로젝트를 시작한다고 의욕 넘치던 초반에 썼던 글...이때부터 계속 기록을 남겼어야했는데! https://jemarque.tistory.com/entry/%EC%B2%AB-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%ED%8C%80-%ED%94%84%EB%A1%9C%EC%A0%9D..

Project 2024.04.30

[백준/python] 21918번 전구

백준 21918번 전구https://www.acmicpc.net/problem/21918 1. 문제 전구의 상태를 숫자 0과 1로 표현한다.전구가 꺼진 경우는 0, 켜진 경우는 1이다.전구를 제어하는 명령어 1~4번을 입력된 순서대로 처리한 뒤의 전구 상태를 확인하는 문제이다. 2. 풀이이 문제는 간단한 구현 문제로, 난이도가 쉬운 편이었다.각각의 명령어를 수행하는 코드를 짜서 명령어가 입력된 순서에 맞게 실행만 시키면 된다. 함수형 프로그래밍 구현을 위해 조건문을 사용해 각 경우를 함수 안에 넣었다.반복문을 사용해 명령어들을 입력받은 순서대로 실행했다. 3. 코드처음 시도에서는 평소 자주 사용하던 방식대로 입력 받은 명령어 정보를 배열에 저장했다.그 뒤에 배열에 저장한 각각의 명령어 정보에 대해 순서대..

[React] 이미지 슬라이더 만들기(자동, 무한반복)

프로젝트에서 메인 페이지와 상세 페이지 상단에 이미지 슬라이더를 넣기로 했다. 조건은 두 가지. 1. 화살표 버튼을 눌렀을 때 이동이 가능할 것. 2. 시간이 지나면 자동으로 다음 이미지로 넘어갈 것. - 옆으로 넘어가는 장면 useState와 useEffect가 필요하다.import { useState, useEffect } from 'react'; react-icons를 설치하여 화살표 아이콘을 가져온다.import { IoIosArrowForward, IoIosArrowBack } from 'react-icons/io'; 이미지 슬라이드에 들어갈 이미지들은 배열 형태로 외부에서 props로 받아오도록 한다.export default function ImageSlider({ slides }) 우선 이..

Programming/React 2024.02.01

[클래식소믈리에] 메인, 문답 시작 페이지 완성

오늘의 작업 디자인을 마치고 메인과 문답 시작 페이지를 완성했다. 원래 pc에 적합한 ui로 디자인했었으나 아무래도 서비스 특성상 모바일 기기로의 공유가 빠를 것 같다는 생각이 들었다. 나 이거 해봤는데 너도 해봐 하면서 공유하는 그런 느낌의 서비스. 인스타 같은 곳에 올리기에도 모바일에 최적화되는 편이 나을 것 같아서 디자인을 수정했다. 핸드폰 화면에 들어갈 정도의 좁은 영역을 사용하는 방향으로 바꾸었다. 어려웠던 점 1. tailwind가 아직 익숙하지 않다. css보다 분명 쉬운 부분도 있지만 문법을 정확히 몰라 계속 문서를 찾아보며 헤맸다. 특히 너비와 높이를 설정함에 있어서 어려움을 많이 겪었다. header와 footer를 포함해서 스크롤바가 생기지 않게 길이를 딱 맞추고 싶은데 그게 아무리 ..

Project 2024.01.20