분류 전체보기
[Python] 카카오 2021 BLIND : 신규 아이디 추천
문제 코딩테스트 연습 - 신규 아이디 추천 [ 문제 조건 ] 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3단계 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4단계 new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5단계 new_id가 빈 문자열이라면, new_id에 "a"를 대입합니다. 6단계 new_id의 길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니..

[Timer] 타이머 숫자(초단위)를 { 분 : 초 }로 변경하기 (String format)
혼자 하고 있는 개인 프로젝트가 있는데, 타이머를 사용해야 해서 View 별로 넘겨받은 걸리는 초를 어떻게 10:00 이렇게 바꿀지 코드를 공유하겠다. 생각보다 간단하게 생각한대로 구현하면 된다. 일단 내 플젝의 경우 1시간이 넘어가는 타이머가 필요 없다. 그래서 time에 초를 입력받으면 필요한 분, 초만 계산해서 원하는 형식으로 변환하여 String 타입으로 리턴했다. //시간 계산 func timeString(time: Int) -> String { let minutes = Int(time) / 60 let seconds = Int(time) % 60 return String(format:"%02i:%02i", minutes, seconds) } 이제 구한 타이머를 출력하면 되겠다 Text에 구현한..
[Python] 백준 5567번 : 결혼식
문제 5567번: 결혼식 [ 문제 조건 ] n : 동기의 수 (즉, 숫자의 종류) m : 친구 관계 나타내는 리스트 개수 [ 해결순서 ] 상근이는 결혼식에 자신의 친구 + 친구의 친구까지 초대 가능하므로 너비우선탐색을 이용해서 자신의 친구먼저 몇명인지 탐색 후 친구의 친구까지 탐색한다. bfs 메소드를 이용해서 친구 1명을 먼저 구한다음 그 친구의 친구까지 탐색하고 다음 친구의 친구의 친구 탐색하고 초대인원 값 + 1하면 깊이를 계산해서 깊이가 2이면 (친구의 친구까지만 초대가능하므로) 총 초대인원 출력하고 종료한다. ✏️한줄평 : 처음에 이진트리를 생각해서 그렇게 풀려고 했는데 사실 굳이 그럴필요 없이 그냥 bfs로 친구들 탐색하고 깊이 +1 하다보면 구해지는 문제였다. 코드

[Python] 백준 14888번 : 연산자 끼워넣기
문제 14888번: 연산자 끼워넣기 [ 문제 조건 ] 입력 N : 수의 개수 A1 ~ An : 수들 sum(N-1) : 합이 N-1인 4개의 정수, 연산자 4개의 각각 개수가 주어짐 (+,-,×,÷) 순으로 출력 만들 수 있는 식의 최대 & 최소 값 출력 -10억 ≤ 결과값 ≤ 10억 [ 해결순서 ] 백트래킹 유형은 dfs를 주로 사용하는 것 같아 dfs로 풀어보려고 했다. 모든 경우의 수를 전부 구해 최대 최소를 비교하는 문제여서 어쨌든 모두 비교해서 구해야한다. 처음 먼저 plus가 1이니까 dfs가 걸려 깊이우선탐색 후 나머지 연산까지 깊이우선탐색 해 값을 갱신 깊이우선탐색 plus 연산은 끝났고, 나머지 연산 중 multiply 값이 1이므로 해당 연산 기준으로 재귀적으로 dfs 진행 후 최대, ..

[Python] 백준 1074번 : Z
문제 1074번: Z [ 문제 조건 ] Z 모양 순서대로 방문 입력한 r행 c열이 몇번 째로 방문하는지 출력 [ 해결순서 ] 1번째 풀이 -> 실패 재귀적으로 모든 분면의 모든 값을 확인해서 2X2 배열일 때 ( 더이상 등분하지 않아도 되면 ) 조건에 맞을 때까지 값을 하나씩 늘려가면서 몇번째 방문인지 계산하다가 r행 c열의 조건이면 여태껏 더한 방문값을 출력하고 종료한다. 이렇게 하면 시간 초과가 날 뿐만 아니라, 입력한 값에 포함하는 분면이 아닌 값들도 모두 확인해 비효율적인다. 2번째 풀이 (참고) 이 풀이는 아이디어를 참고한 후 코드를 짜면서 해석했는데, 이 문제를 풀 때 내가 처음에 생각해낸 아이디어와 비슷했다. (코드를 못 짜겠어서 1번째 풀이로 풀었지만..) 입력한 값이 몇 사분면인지 계산한..
[Swift] 구조체(struct) 공부하기!
처음 swift를 접했을 때 struct가 뭐지? 자바를 먼저 썼던 나는 class랑 뭐가 다르지 하며 궁금해했는데 공부를 해보니 사용법은 거의 유사하나 성능 및 쓰임새가 다른데, 간략히 설명하면 ( Pingu님 블로그 정리자료 참고 ) 공통점 1. 둘 다 값을 저장할 수 있는 프로퍼티를 선언할 수 있으며 2. 생성자를 사용할 수 있고, 차이점 - Class는 참조 타입이라 같은 클래스의 인스턴스 변수를 선언하고 값을 할당한 후 하나의 값을 변경하면 같은 참조를 한 변수도 변경된다. - Struct는 값 타입이며 새로운 변수를 할당할 때 마다 새로운 구조체가 할당된다. ( 각각 값이 존재해서 영향을 미치지 X ) 구조체는 그럼 어떻게 사용할까? 설명은 주석을 참고해주세요 ! struct Town { //..
[Python] 백준 11051 : 이항 계수 2
문제 11051번: 이항 계수 2 [ 문제 조건 ] nCk 를 구하면 된다. [ 해결순서 ] 먼저 분류가 DP라서 DP로 해결하려 했다. 팩토리얼 값들을 저장하기 위해 dp배열을 선언해서 반복해서 곱한 값들을 배열에 저장하였고 계산 된 값을 그냥 공식에 맞게 출력했다. nCn이나 nC0인 경우는 값이 그냥 1이기 때문에 조건문을 추가하였다. ( 넣지않아서 에러가 발생했다 ) 파이썬에 내장되어 있는 factorial 모듈도 있길래 그것도 사용해서 풀어봤다. 3줄만에 풀 수 있었다 ! ✏️한줄평 : 재귀적으로 팩토리얼을 구하지 않고 dp로 풀어볼 수 있는 문제였다. 코드

[SwiftUI] NavigationLink를 이용해서 페이지 이동하기
처음에 버튼 이미지를 넣어놓고 이제 어떻게 페이지 이동하지? 고민하면서 구글링 한 결과, 버튼이 아닌 NavigationLink를 이용해야 한다. 페이지 이동이 한번만 될 뿐 아니라, 두세번 원하는 만큼 설정하면 계속 연결되어 구현 가능하다. 바로 코드로 설명 !! 아이콘을 누르면 바로 해당 목적지의 뷰로 넘어가지만, 나는 NavigationLink안에 NavigationLink를 또 넣어 스택이 쌓이는 것처럼 화면에 들어가고 또 들어가게 구현해 보았다. var body: some View { NavigationView(content: { VStack(spacing: 40) { NavigationLink( destination: PickRamen()) { Icons(actionText: ..

[Python] 백준 1309번 : 동물원
1309번: 동물원 [ 문제 조건 ] 2 * N 배열의 동물원 우리 사자를 배치할 때 가로 세로로 붙어있으면 안됨 사자가 한마리도 없는 경우도 1가지 경우로 침 [ 해결순서 ] 처음엔 기존의 dp 같은 방식으로 풀려고 시도해 배열의 각 칸에 숫자를 부여해서 조건에 맞는 조합으로 값을 계산해서 구하려고했다. 뭔가 규칙이 보이는 것 같다가도 막상 식을 못세우겠어서 조금 헤매다 결국 구글의 도움을 좀 받았다. ( 삽질을 하고있단 느낌이 .. ) 첫번째 줄에 경우를 3가지로 나눠서 계산을 해야한다. *4번 줄 참고 경우의 수를 나눈 후 제일 작은 예시인 2 X 2 배열일 때를 직접 적어가며 규칙을 찾아보려했다. 사진을 참고하면 이해가 빠르겠지만, 한마리도 두지 않는 경우는 ( 두지 않는 경우, 왼쪽, 오른쪽 )..

[Python] 백준 1932 : 정수 삼각형
문제 https://www.acmicpc.net/problem/1932 [ 문제 조건 ] 한 줄씩 내려가면서 합이 최대가 되는 경로 구하기 더해질 수 있는 값은 대각선 왼쪽 or 오른쪽 [ 해결순서 ] 누적 값이 더해질 배열을 0으로 초기화 해서 입력받은 배열의 길이와 같게 선언 및 초기화 ( 그냥 입력받은 배열에다가 계산해도 무관하다 ) 예제를 분석하다 보니 가로 줄의 첫번째 값과 끝 값은 비교 대상이 없으므로 그냥 전 줄의 같은 인덱스 값을 더하면 되고, 처음, 끝을 제외한 인덱스 값들은 이제 대각선 왼쪽 or 오른쪽을 비교해서 더 큰 값을 현재 값에 더해준다. 그렇게 값을 누적시키면 맨 마지막 줄에 이제 여태까지 누적된 경우의 수가 배열에 저장 그 중 최대 값을 구해 출력한다. [ 예제 풀이 ] ✏..