본문 바로가기

백준 PS일지/String

(10)
[백준/Swift] 모음의 개수: 1264 | PS일지 문제 간단한 문제 요약 영문 입력 받았을 때 모음 "a,e,i,o,u" 개수를 세시오!!!!!!!! 고려해야 할 사항 # 입력 받을 시 종료! 코드 while let input = readLine(), input != "#" { print( input .lowercased() .filter { "aeiou".map { String($0) }.contains(String($0)) }.count) }
[백준/Swift] 1302: 베스트셀러 | PS일지 문제 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 간단한 문제 요약 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오. 고려해야 할 사항 책은 가장(최대) 많이 팔린 책의 이름이 출력되야 하는데, 가장 많이 팔린 책의 개수가 같다면, 사전순(최소)으로 가장 앞서는 제목 출력해야 합니다. 문제 풀이, 새로 배운 개념 팔린 책들 중 이름이 같은 책이 있기에, 배열로 저장하기 보단 딕셔너리로 저장했습니다. 그리고 max함수를 통해, val..
[백준/Swift] 6550: 부분 문자열 | PS일지 문제 6550번: 부분 문자열 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다. www.acmicpc.net 간단한 문제 요약 2개의 문자열 s t가 주어졌을 때 s가 t의 부분 문자열인지!! 이 문제에서의 부분 문자열이란 t의 문자열에서 몇 개의 문자들을 제거 한 후 합쳤을 때 s와 일치해야 하는 경우. 문제 풀이 | PS일지 s == needle t == text tIdx = 0, nIdx = 0 각각의 문자열을 배열로 만든 후에, 각각의 배열에 대해서 따로 따로 탐색할 포인터를 index로 두었습니다. 그리고 text[tIdx] == nIdx[nIdx] 일치하지 ..
[백준/Swift] 144256: 접두사 찾기 | PS일지 문제 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 간단한 문제 요약 N개의 줄에 집합S에 포함된 문자열이 주어집니다. 그리고 다음 M개의 줄에는 검사해야 하는 문자열이 주어집니다. 검사해야 할 문자열 중에 S의 접두사에 적어도 한 개 이상 포함되는지 개수를 찾는 문제입니다. 예를들어 S = "codeplus", "cow"이고, M = "code", "co", "crud"일 때 code, co. 2개가 S의 접두사에 해당됩니..
[백준/Swift] 4354: 문자열 제곱 | PS일지 문제 4354번: 문자열 제곱 알파벳 소문자로 이루어진 두 문자열 a와 b가 주어졌을 때, a*b는 두 문자열을 이어붙이는 것을 뜻한다. 예를 들어, a="abc", b="def"일 때, a*b="abcdef"이다. 이러한 이어 붙이는 것을 곱셈으로 생각한다 www.acmicpc.net 간단한 문제 요약 문자열 S가 주어졌을 때 어떤 문자열 a에 대해 s=a^n을 만족하는 가장 큰 n을 찾으시오. 문자열 곱셈에 대해서 a^0 = "" (빈 문자열) a^(n+1) = a*(a^n) 으로 정의 됩니다. 문제 풀이, 느낀점 "주어진 문자열S에서 어떻게 하면 부분 문자를 선정해 반복적으로 곱하면 S를 만들 수 있을까?.." 가장 유리한 것은 s문자열의 첫 문자부터 prefix로 하는 부분 문자열의 최소 길이를 ..
[백준/Swift] 7575: 바이러스 | PS일지 문제 7575번: 바이러스 첫 번째 줄에는 감염된 프로그램의 개수 N 과 바이러스 코드 추정을 위한 최소 길이를 나타내는 정수 K 가 주어진다. 단, 2 ≤ N ≤ 100이고, 4 ≤ K ≤ 1,000이다. 두 번째 줄부터 각 프로그램에 대한 www.acmicpc.net 간단한 문제 요약 백신 프로그램 개발을 위해서는 바이러스 코드를 알아야 한다. 여러 프로그램에서 공통으로 존재하는 부분이 바이러스로 의심된다. 바이러스는 자신의 코드를 반대로 기입할 때도 있다( 공통으로 존재하는 의심 피하려고). 공통으로 나타나는 코드 길이 K인 경우에 바이러스 코드로 추정한다. 추정되는 바이러스 코드를 구하자! 문제 풀이 프로그램 1: 10 8 23 93 21 42 52 22 13 1 2 3 4 프로그램 2: 1 3 ..
[백준/Swift] 1701: Cubeditor | PS일지 문제 1701번: Cubeditor Cubelover는 프로그래밍 언어 Whitespace의 코딩을 도와주는 언어인 Cubelang을 만들었다. Cubelang을 이용해 코딩을 하다보니, 점점 이 언어에 맞는 새로운 에디터가 필요하게 되었다. 오랜 시간 고생한 www.acmicpc.net 간단한 문제 요약 어떤 문자열내에서 같은 부분 문자열이 두 번 이상 나오는 문자열을 찾는데 이때 두 부분 문자열은 겹처도 된다. 가장 길이가 긴 것을 구하는 프로그램을 작성하시오. 문제 풀이, 했갈렸던 점 주어진 문자열을 pattern 이라 부르겠습니다. 정답은 pattern 내 여러 substring 중 같은 substring 두 개 이상 나와야 합니다. 그 substring은 같은 substring들 중에서 길이가 ..
[백준/Swift] 1305: 광고 문제 해석 | PS일지 :] 문제 간단한 문제 요약 전광판에는 같은 내용의 문구가 무한히 반복되어 나온다. 전광판의 크기 L은 전광판에서 한번에 보이는 최대 문자수를 나타낸다. 전광판의 크기가 L이라면 한번에 L개의 문자를 표시 할 수 있다. 광고업자는 길이가 N인 광고문구를 전광판에 붙이려 한다. 근데 돈을 많이 냈기에 N을 무수히 반복해서 전광판의 빈 곳 없이 L만큼의 길이로 채우려고 한다. 문제 풀이, 했갈렸던 점 예를들어 L: 6 N: 4 내가 광고하기 싶은 광고 문구: LOVE 전광판에는 6개의 글자를 넣을 수 있고 문제에서 광고업자는 광고 문구를 무수히 반복해서 L만큼 채워 넣으려고 합니다. 그렇다면 LOVELO 가 광고 문구의 첫 글자로 채워집니다. 문제를 정말 1시간?2시간 봤는데도 문제 이해하기 어려웠어요 ㅠㅠㅠ....