list의 메소드를 사용할 줄 아는가?
집합 성공
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
1.5 초 | 4 MB (하단 참고) | 34827 | 10737 | 7549 | 29.999% |
문제
비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.
- add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.
- remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.
- check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)
- toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
- all: S를 {1, 2, ..., 20} 으로 바꾼다.
- empty: S를 공집합으로 바꾼다.
입력
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
출력
check 연산이 주어질때마다, 결과를 출력한다.
예제 입력 1 복사
26
add 1
add 2
check 1
check 2
check 3
remove 2
check 1
check 2
toggle 3
check 1
check 2
check 3
check 4
all
check 10
check 20
toggle 10
remove 20
check 10
check 20
empty
check 1
toggle 1
check 1
toggle 1
check 1
예제 출력 1 복사
1
1
0
1
0
1
0
1
0
1
1
0
0
0
1
0
알고리즘 해설.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
val br = BufferedReader(InputStreamReader(System.`in`))
/*
이 문제는 그냥 list의 메소드를 활용하여 풀었습니다.
1.add같은 경우 그냥 add를 해주었고
2. check는 contains 메소드를 사용해서 element가 list에 있다면 true를 반환
하기때문에, true일때 1을 출력하도록 아니라면 0을 출력하도록 하였습니다.
3. toggle은 contains 메소드를 사용해서 element가 있다면 remove 없다면 add
를 하도록 하였습니다.
4. all은 기존에 list에 있던 내용을 clear를 통하여 모두 제거하고 새롭게
1~20까지의 수를 add 했습니다.
5. empty는 clear를 사용해여 빈 list로 만들어 줍니다.
*/
fun main()=with(br){
val bw = BufferedWriter(OutputStreamWriter(System.out))
val num = readLine()!!.toInt()
var list = mutableListOf<Int>()
for(i in 0 until num){
val line = readLine()!!.split(" ")
if(line[0]=="add"){
list.add(line[1].toInt())
}
else if(line[0]=="check"){
if(list.contains(line[1].toInt())){
bw.write("1\n")
}
else{
bw.write("0\n")
}
}
else if(line[0]=="toggle"){
if(list.contains(line[1].toInt())){
list.remove(line[1].toInt())
}
else{
list.add(line[1].toInt())
}
}
else if(line[0]=="remove"){
if(list.contains(line[1].toInt())){
list.remove(line[1].toInt())
}
}
else if(line[0]=="all"){
list.clear()
for(i in 1 until 21){
list.add(i)
}
}
else if(line[0]=="empty"){
list.clear()
}
}
bw.flush()
bw.close()
}
'알고리즘 공부 > 미분류' 카테고리의 다른 글
백준 1676번 with Kotiln (0) | 2021.08.02 |
---|---|
백준 1107번 with Kotlin (0) | 2021.08.02 |
백준 11399번 with 코틀린 (0) | 2021.07.23 |
백준 9095번 with Kotiln (0) | 2021.07.23 |
백준 1463번 1로 만들기 with Kotlin # DP #IntArray 속도 (0) | 2021.07.23 |