전체 글 29

백준 1062번 가르침

https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 문자열 문제를 풀어보려했으나? dfs였던 문제; 비트마스킹 연습도 되어서 좋았다. (근데 그래도 코테에서는 배열 visit체크로 풀 것 같다. 더 구현이 편함..) 비트마스킹이 손에 덜 익어서 좀 어려웠던 문제. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ..

개발/알고리즘 2021.06.17

백준 9465번 스티커

https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 알고리즘 스터디에서 못 풀었던 문제를 dp를 공부하고 나니 이제 풀 수 있었다! 30분 컷! 이제 dp문제를 어떻게 풀어야 할지 감은 잡을 수 있을 것 같다. 근데 실버 2인데 왜 실버 1이었던 RGB거리보다 어렵지?. 스티커를 선택하면 변을 공유하는 다른 스티커들은 사용할 수 없다고 한다. 여기서 생각한 점 왼쪽부터 시작해서 윗줄의 스티커를 선택하면 다음엔 아랫줄의 스티커를 선택하면 ..

개발/알고리즘 2021.06.10

백준 1149번 RGB거리

https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 백준님이 코테에서 dp는 잘 안 나온다고 하셨지만 그래도 dp문제를 잘 못 푼다고 생각해서.. 쉬운 문제를 풀어보았다. 풀면서 DP의 기본은 dp[i] = dp[i-1] + a 라는 것을 알게되었다. (이전값을 통해서 현재값을 계산) 이문제의 경우에는 이전 값을 통해서 다음 값을 계산하기 때문에 굳이 리스트를 통해 dp테이블을 가지고 있을 필요는 없었다. 하지만 dp문제를 접..

개발/알고리즘 2021.06.09

백준 11725번 트리의 부모 찾기

https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 노드의 개수가 100000개까지 이므로 인접리스트를 사용하는 것을 생각했고 루트부터 리프까지 탐색하기 위해 dfs를 사용했다. 인접리스트랑 dfs를 연습해볼 수 있었던 좋은문제! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; publ..

개발/알고리즘 2021.06.08

백준 2644번 촌수계산

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net 전형적인 dfs연습문제였다. 문제들을 bfs로 많이 풀다보니 자연스럽게 bfs로 풀려고 하는 것 같은데, 이처럼 단순한 문제는 dfs로 풀어보려는 노력을 해야겠다. 그래도 dfs 까먹거나 그런건 아니니 다행! import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..

개발/알고리즘 2021.06.08

백준 21608번 상어초등학교

https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 깡 구현문제였는데 실버1치곤 쉽지 않았던 것 같다. 처음부터 학생 클래스를 만들어서 위치, 좋아하는 학생리스트를 넣어줬다면 탐색작업을 더 적게했을텐데.. 못생긴코드 package bj2021_06_07_상어초등학교; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp..

개발/알고리즘 2021.06.07

카카오 로그인 만들기 3

로그아웃, 연결끊기를 모두 테스트 해보고 결과를 기록한다. 1. 로그아웃 로그아웃은 토큰만 만료시키므로 리다이렉트 작업을 따로 해줘야한다. 2. 연결끊기 음.. 처음에는 무슨 말인지 이해가 잘 안됐는데, 앱 처음시작할 때 사용자 정보 동의를 할텐데, 연결 끊기를 하면 다시 정보동의 창이 뜨게된다. 말그대로 앱과 사용자 계정의 연결을 끊는다. @RequestMapping(value="/kakaologout") public String logout(HttpSession session) { kakaoLogin.logout((String)session.getAttribute("access_token")); session.invalidate(); return "redirect:/"; } 로그아웃 컨트롤러 뚝딱. ..

카카오 로그인 만들기 2

코드까진 받았으니 토큰을 요청해보자. 문서에 설명이 너무 잘되어있다. 그래도 해보는걸로. @Service public class KakaoLoginService { public String getAccessToken (String auth_code) { String access_token = ""; String refresh_token = ""; String reqURL = "https://kauth.kakao.com/oauth/token"; try { URL url = new URL(reqURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // POST 요청을 위해 기본값이 false인 setDoOutput을 true로 co..

카카오 로그인 만들기 1

현재 진행하고 있는 프로젝트에서는 회원가입/ 로그인 기능을 포함하고 있었다. 팀원들과 회의를 하면서 생각해보니 굳이 사용자의 여러정보를 받을 필요가 없어서, 카카오 로그인을 통해 이메일 정도만 가져오도록 수정작업을 하기로 했다. 학교 다닐적에 Spring 공부하면서 카카오 로그인기능을 한번 구현해본적이 있어서 어렵지 않을 것 같지만 과연?.. 일단 유하(프로젝트명)로 애플리케이션을 만들었다. 저아래있는 jam은 예전에 연습했었던 카카오로그인의 잔재.. 화면을 심플하게 구성하기 위해서 큰 버튼을 넣어두는게 좋겠다고 생각했다. rest api키와 redirect url을 보내면 된다고 나와있다. 로그인 성공 @Controller public class KakaoLoginController { @Request..