분류 전체보기
-
SW Expert Academy D2 문제 풀이알고리즘 2023. 6. 28. 19:37
1959 두 개의 숫자열 두 개의 숫자열이 주어질 경우 길이가 짧은 배열을 움직여 마주보는 숫자를 곱한 값의 합이 가장 큰 경우를 구하는 문제입니다. 이 문제는 모든 값을 모두 대조해봐야된다고 생각했으므로 숫자열이 마주칠 수 있는 모든 경우의 수를 탐색할 수 있도록 했습니다. 모든 경우의 수에서 마주보는 숫자 곱의 합의 최대값을 구할 수 있도록 했습니다. 1974 수도쿠 검증 완료한 수도쿠가 주어졌을 경우 해당 수도쿠가 성공했는지 실패했는지 확인하는 문제입니다. 이중 for문을 이용하여 해결했습니다. 가로와 세로는 sudoku[i][j], sudoku[j][i]에 1~9의 숫자가 존재하는지 확인하면 됩니다. 3*3격자는 sudoku[(i//3)*3+j//3][(i%3)*3+j%3]에 1~9가 모두 존재하..
-
백준 1339 단어 수학알고리즘 2023. 6. 27. 10:22
문제 설명 이번 문제는 N개의 알파벳 단어가 주어질 경우 알파벳을 숫자 0~9 중 하나로 바꿔서 각 단어의 합을 구할 때, 이 합의 최대를 구하는 문제입니다. 모든 단어에 포함된 알파벳의 종류는 10개입니다. 각 단어의 길이는 8입니다. 문제 풀이 아이디어 최대값 각 알파벳을 숫자로 바꾼 뒤의 합을 구할 때, 높은 자리수의 알파벳이 큰 숫자가 되어야 합의 최대가 될 수 있습니다. 그러므로 가장 높은 자리에 위치한 알파벳이 큰 숫자가 되어야 합니다. 만약 여러 단어에서 같은 자리수의 알파벳 중 더 높은 숫자를 줘야 하는 알파벳을 고려해야 한다면, 이후에 또 등장하고 등장하는 자리수가 더 높은 알파벳에 더 높은 숫자를 부여해주어야 합니다. 등장하는 자리수 구하기 각 알파벳이 등장하는 자리수를 저장해두어야지만..
-
자바를 시작해보자언어/Java 2023. 6. 26. 21:44
자바 프로그래밍의 특징 플랫폼에 영향을 받지 않으므로 다양한 환경에서 사용할 수 있다. 객체 지향 언어이기 때문에 유지보수가 쉽고 확장성이 좋다 프로그램이 안정적이다 풍부한 기능이 제공되는 오픈 소스이다. 객체 지향 프로그래밍 프로램의 구현을 시간의 흐름 순이 아닌 객체간의 협력을 기반으로 프로그램 하는 것 OOP(Object Oriented Programming)이라고 한다 용어 JDK (JAVA Development Kit) : 자바에서 제공되는 개발용 라이브러리 JRE (JAVA Runtime Environment) : 자바 프로그램 실행 환경 JVM (Java Virtual Machine) : 자바 가상 머신으로 프로그램이 실행되는 환경인 JRE가 설치되어 있어야 한다 객체 의사나 행위가 미치는 ..
-
백준 7576번 토마토알고리즘 2023. 6. 26. 21:16
문제 설명 이번 문제는 토마토를 보관할 경우, 하루가 지나면 익은 토마토 주변의 토마토가 익게 될 경우 모든 토마토가 익으려면 며칠이 걸리는지 구하는 문제입니다. 주변은 상하좌우를 말합니다. 보관 창고에는 빈 공간이 존재합니다. 모든 토마토가 익을 수 없는 경우 -1 문제 풀이 아이디어 BFS 각 익은 토마토로부터 주변의 토마토가 익게 되므로 BFS를 통해 익은 토마토의 주변부터 탐색할 수 있도록 합니다. 풀이 BFS 현재 익은 토마토의 좌표를 queue에 넣어줍니다. 이 때, 첫 날 익은 토마토를 모두 한 배열안에 넣어준다음 이것을 queue에 넣어줍니다. queue= [ [ [r1,c1], [r2,c2], ... ] ] 이런 식으로 진행할 경우 진행된 날짜를 세기 편한 것 같습니다. queue의 원소..
-
CRA 없이 React 설정하기 2프론트엔드 2023. 5. 22. 18:29
이번 글은 저번 CRA 없이 React 설정하기 1의 react 기본 설정과 eslint, prettier 도입 이후 webpack과 babel을 설정하는 과정을 작성할 예정입니다. 이번 글의 목표는 react 앱에 webpack과 babel을 적용시키는 것입니다. 각 옵션들이 필요한 이유와 목적 등을 이해하면서 글을 작성해보도록 하겠습니다. webpack과 babel을 사용하는 이유 webpack은 프로젝트 번들러로 프로젝트에 필요한 자원들을 합쳐주는 역할을 합니다. 여러 개로 나누어진 파일들을 하나로 합쳐줌으로써 네트워크 비용을 줄여줍니다. babel은 트랜스파일링 도구로 최신의 자바스크립트 문법을 오래된 브라우저가 이해할 수 있도록 오래된 문법으로 변환해주는 역할을 합니다. 모든 브라우저에서 호환 ..
-
CRA 없이 React 설정하기 1프론트엔드 2023. 5. 20. 15:58
이 글을 쓰게 된 배경 CRA가 나타난 배경 Creat React App이 없는 이전에는 여러 도구를 설치하고, 개발 환경을 구성하고, 여러 사전 설정을 한 뒤 린트를 구성하는 등의 개발 전에 해야할 것들이 굉장히 많았습니다. 이런 구성을 프로젝트 시작마다 하는 것은 굉장히 까다로운 일이었을 것입니다. 이에 사람들은 자신만의 보일러 플레이트를 만들어 공유함으로써 대처할 수 있었습니다. 하지만, 여기서도 문제점이 발생했습니다. 각 프로젝트마다 달라지는 설정에 따라 변경이 요구되고, 오래된 설정은 업데이트를 해야하며 다른 라이브러리와의 호환하여 동작하도록 하기 위해서도 많은 노력이 필요했습니다. 이를 보완하기 위해 Creat React App이 등장하였고, CRA는 필요한 라이브러리를 묶어 패키지로 결합하고..
-
백준 2252번 줄 세우기알고리즘 2023. 4. 30. 10:07
문제 설명 이번 문제는 일부 학생의 키를 비교한 정보가 주어질 때, N명의 학생들을 키 순서대로 줄 세우는 방법을 구하는 문제입니다. (답이 여러가지일 경우 한 가지만 출력해줍니다.) 문제 풀이 아이디어 줄을 서는 순서 입력으로 A B가 주어졌을 경우 B는 무조건 A 뒤에 있어야 하므로, B가 줄에 서기 위해 {A가 줄에 먼저 서야 된다}는 전제조건이 생깁니다. (줄을 앞에서부터 선다고 가정했습니다.). 만약 B보다 앞에 와야하는 사람이 A 한 명이고 현재 A가 줄을 서게 된다면, B는 이후 어느 곳이든 줄을 서도 됩니다. 만약 B보다 앞에 와야하는 사람이 A와 C일 경우, A와 C가 모두 줄을 서야지만 B가 줄에 설 수 있게 됩니다. 풀이 변수 followed[N][] = 자신의 뒤에 오는 사람을 저장..
-
백준 14499번 주사위 굴리기알고리즘 2023. 4. 29. 10:26
문제 설명 이번 문제는 주사위의 전개도가 주어지고, 주사위를 놓은 곳의 좌표와 이동시키는 명령이 주어졌을 때, 주사위가 이동했을 때마다 상단에 쓰여있는 값을 구하는 문제입니다. 지도의 각 칸에는 정수가 하나씩 쓰여 있습니다. 주사위를 굴렸을 때, 이동하는 칸에 쓰여 있는 수가 0이면 주사위의 바닥면에 쓰여 있는 수가 칸에 복사됩니다. 0이 아닌 경우에는 칸에 쓰여 있는 수가 주사위의 바닥면으로 복사되며, 칸에 쓰여 있는 수는 0이 됩니다. 주사위는 지도 바깥으로 이동시킬 수 없습니다. 만약 바깥으로 이동하려고하면 해당 명령을 무시해야하고, 출력도 하면 안 됩니다. 문제 풀이 아이디어 주사위 면 하늘을 바라보고 있는 면(0)과 동서남북(1,2,3,4)를 향하고 있는 면, 바닥에 닿는 면(5) 총 6개의 면..